数值类型:整型,浮点型,布尔类型,e记法(结果为浮点型)
类型转换:int(),float(),str()
获得关于类型的信息:type(), isinstance()
type(a) isinstance(a,str)
算数操作符:+,-,*,/(区别:5/2=2.5),%,**(幂运算),//(地板整除)
优先级问题:幂运算>正负号>算数操作符>比较操作符(允许3<4<5)>逻辑运算符(not,and,or)
可有效避免悬挂else(因严格缩进):
if(...): if(...): print("...") else: print("...")条件表达式(三元操作符):
x,y=4,5 if x<y: small = x else: small = y等价于
small = x if x<y else y断言:当条件为假时,程序自动崩溃并抛出AssertionError的异常,用于确保程序中的某个条件一定为真才能让程序正常工作。
e.g. asset 3>4
for循环:
for 目标 in 表达式: 循环体range() : range([start,]stop[,step=1]),生成数字序列。
for i in range(5): print(i) for i in range(1,7): print(i)
两个关键的语句:break,continue
序列:列表,元组和字符串的共同点:都可以通过索引得到每一个元素;默认索引值都是从零开始;可以通过分片的方法得到一个范围的元素的集合;有很多共同的操作符(重复操作符,拼接操作符,成员关系操作符)
列表:
列表推导式:a=[x for x in range(100) if not (x%2) and x%3]
向列表中添加元素:append(): 插入一个元素。
extend():利用一个列表插入多个元素。
insert(索引,元素)
分片(切片):
list[:3] list[3:] list = [1,2,3,4]区别list1与list2:
list1 = list[:] list2 = list
元组:戴上了枷锁的列表
字典:
推导式:{i : i%2 == 0 for i in range(10)}
集合:推导式:{i for i in range(10)}
生成器推导式:(i for i in range(10) if i%2)
枚举 enumerate(可迭代对象):
>>> list(enumerate(list2)) #[(0, 3), (1, 54), (2, 6), (3, 3), (4, 4)]
zip():
>>>a = [1,2,3,4,5,6,7,8] >>>b = [1,2,3,4,5] >>>list(zip(a,b)) #[(1,1),(2,2),(3,3),(4,4),(5,5)]函数参数:
默认参数一定要用不可变对象,如果是可变对象,程序运行时会有逻辑错误!
要注意定义可变参数和关键字参数的语法:
*args
是可变参数,args接收的是一个tuple;
def sum1(*num): result = 0 for i in num: result += i return result n = [1,2,3,4] s = sum1(*n) print(s)
**kw
是关键字参数,kw接收的是一个dict。
def sum2(**num): for key,value in num.items(): print(key+"-->"+value) n1 = {'1':'one','2':'two','3':'three'} sum2(**n1)
以及调用函数时如何传入可变参数和关键字参数的语法:
可变参数既可以直接传入:func(1, 2, 3)
,又可以先组装list或tuple,再通过*args
传入:func(*(1, 2, 3))
;
关键字参数既可以直接传入:func(a=1, b=2)
,又可以先组装dict,再通过**kw
传入:func(**{'a': 1, 'b': 2})
局部变量与全局变量:如一定要用局部变量修改全局变量用global。
匿名函数lambda:
lambda 参数 :返回值表达式过滤器 filter(过滤条件 ,过滤对象):过滤False,剩下 True。
映射map(映射关系,映射对象)
>>>list(filter(lambda x : x%2,range(10))) #[1,3,5,7,9] >>>list(map(lambda x : x*2,range(10))) #[0,2,4,6,8,10,12,14,16,18]