python复习(一)
·参考
循环
ranger(100)表示0到99这一百个数
可以被next()函数调用并不断返回下一个值的对象称为迭代器:Iterator。
把list、dict、str等Iterable变成Iterator可以使用iter()函数
不可变对象
1>>> a = 'abc' 2>>> a.replace('a', 'A') 3'Abc' 4>>> a 5'abc'
列表(list)
1# 向列表追加元素 2a = ['hello','h','a','b'] 3a.append('world') 4# 删除列表最后一个元素 5a.pop()
切片
1# 从a[0]开始到a[2] 2a[0:3] 3# 或者,省略0 4a[:3] 5# 省略-1 6a[-2:] 7# 每两个取一个 8a[::2]
迭代
判断是否可迭代
1isinstance(x, Iterable)
下标循环
1>>> for i, value in enumerate(['A', 'B', 'C']): 2... print(i, value) 3... 40 A 51 B 62 C
列表生成式
1>>> [x * x for x in range(1, 11)] 2[1, 4, 9, 16, 25, 36, 49, 64, 81, 100] 3# 或者 4>>> [x * x for x in range(1, 11) if x % 2 == 0] 5[4, 16, 36, 64, 100] 6# 使用两层循环,生成全排列 7>>> [m + n for m in 'ABC' for n in 'XYZ'] 8['AX', 'AY', 'AZ', 'BX', 'BY', 'BZ', 'CX', 'CY', 'CZ']
元组(tuple)
1# 只有一个元素时 2a = ('hello',) 3# 而不是 4a = ('hello')
字典(dict)
key不存在
如果key不存在,dict会报错
>>> a['hello']
Traceback (most recent call last):
File "
删除key
1a.pop('hello')
set
key不会重复
1a = set([1,2,3]) 2# 添加key到set 3a.add(4) 4# 删除key从set 5a.add(4)
set可以看成数学意义上的无序和无重复元素的集合,因此,两个set可以做数学意义上的交集、并集等操作:
1>>> s1 = set([1, 2, 3]) 2>>> s2 = set([2, 3, 4]) 3>>> s1 & s2 4{2, 3} 5>>> s1 | s2 6{1, 2, 3, 4}
迭代key和value
1for k,v in a.items(): 2 print(k,v)
数据类型转化及内置函数
1# 转换函数 2int float str bool 3# 数据类型检查 4isinstance(x, (int, float))
generator
生成一个generator
1>>> g = (x * x for x in range(2)) 2>>> g 3<generator object <genexpr> at 0x1022ef630>
输出generator
1>>> next(g) 20 3>>> next(g) 41 5>>> next(g) 6Traceback (most recent call last): 7 File "<stdin>", line 1, in <module> 8StopIteration
或者使用for
yield
可将函数输出转化为generator
函数
函数没有return,默认return None,简写为return
返回多个数return 'hello','world'其实质是一个tuple
可变参数
1def calc(numbers): 2 sum = 0 3 for n in numbers: 4 sum = sum + n * n 5 return sum
调用是需要使用list或tuple,calc([1,2,3])或calc((1,2,3))
使用可变参数
1def calc(*numbers): 2 sum = 0 3 for n in numbers: 4 sum = sum + n * n 5 return sum
调用时就可以calc(1,2,3)
也可以将list或tuple传入
1>>> nums = [1, 2, 3] 2>>> calc(*nums) 314
关键字参数
1def person(name, age, **kw): 2 print('name:', name, 'age:', age, 'other:', kw)
调用时可以只传入name和age,或者传入任意个数的关键字参数
1>>> person('Michael', 30) 2name: Michael age: 30 other: {} 3>>> person('Adam', 45, gender='M', job='Engineer') 4name: Adam age: 45 other: {'gender': 'M', 'job': 'Engineer'}
也可这样调用
1>>> extra = {'city': 'Beijing', 'job': 'Engineer'} 2>>> person('Jack', 24, **extra)
命名关键字参数
如果要限制关键字参数的名字,就可以用命名关键字参数,例如,只接收city和job作为关键字参数。这种方式定义的函数如下:
1def person(name, age, *, city, job): 2 print(name, age, city, job)
参数组合
参数定义的顺序必须是:必选参数、默认参数、可变参数/命名关键字参数和关键字参数
