python与c的比较学习
python没有分号!!!
True的”T”要大写
基本语法
数据类型和变量
- Python允许用’’’…’’’的格式表示多行内容
- /除法计算结果是浮点数,即使是两个整数恰好整除,结果也是浮点数
- 还有一种除法是//,称为地板除,两个整数的除法仍然是整数:
- ‘Hello, %s’ % ‘world’(比c语言多一个%)(或者用format)
- ‘Hello, {0}, 成绩提升了 {1:.1f}%’.format(‘小明’, 17.125)
- 文件开头写上这两行:
1
2#!/usr/bin/env python3
# -*- coding: utf-8 -*-
特殊数据结构
list (类似于数组但元素的数据类型也可以不同)
- list可以以负数为索引,从尾到头搜索
- classmates.append(‘Adam’) -往list中追加元素到末尾
- classmates.insert(1, ‘Jack’) -把元素插入到指定的位置(从0开始)
- classmates.pop() -删除list末尾的元素
- classmates.pop(i) -删除指定位置元素(从0开始)
turple(元组,一旦初始化就不能修改)
- t = (1) -定义1这个数 t = (1,) -定义一个只含1这个元素的turple
- t = (‘a’, ‘b’, [‘A’, ‘B’]) -”可变”的turple
这里turple里面有一个list,相当于c语言里一个const int*t[n],但是t里面的指针可以改变指向.
c语言中int *const p为常指针,不能改变指针的指向
dict
dict全称dictionary,在其他语言中也称为map(见JavaScript中的Map,不是map
1
2
3a = {'Michael': 95, 'Bob': 75, 'Tracy': 85}
a['Michael']
95dict内部存放的顺序和key放入的顺序是没有关系的
- d.get(‘Thomas’) -get方法
- pop(key) -删除一个key
- dict与list的比较
名称 | 时间与键值对数目的关系 | 内存与键值对的关系 |
---|---|---|
dict | 查找和插入的速度极快,不会随着key的增加而变慢 | 需要占用大量的内存,内存浪费多 |
list | 查找和插入的时间随着元素的增加而增加 | 占用空间小,浪费内存很少 |
- dict的key必须是不可变对象
set
- set和dict类似,也是一组key的集合,但不存储value。由于key不能重复,所以,在set中,没有重复的key
- s = set([1, 2, 3]) -创建set
- add(key) -添加元素到set中
- remove(key) -从set中删除元素
- 两个set可以做数学意义上的交集、并集等操作 s1 & s2 s1 | s2
判断与循环
- 选择和判断语句后要加引号":"
- Python的缩进规则,如果if语句判断是True,就把缩进的n行print语句执行了,否则,什么也不做(不需要括号哦)
input()返回的数据类型是str,str不能直接和整数比较,必须先把str转换成整数
1
2
3
4
5
6s = input('birth: ')
birth = int(s) //类似于强制转换,但注意在python中int()是一个函数
if birth < 2000:
print('00前')
else:
print('00后')range()函数可以生成一个连续的整数数列
- list()函数可以将range生成的数列转换为list
1
2list(range(5))
[0, 1, 2, 3, 4]
Python初感知
典型的面向对象编程,感觉和JavaScript十分相似(list像arr,dict像Map,set像Set),感觉十分简洁,规范性弱于C,但是Python和JavaScript的区别暂时还没有看出来,有待日后做专题比较.