流畅的Python(一)
参考资料: book
video
### 列表推导 生成一个循环列表 1
a=[i for i in range(5)]
生成一个双循环列表 1
2
3
4
5a=[(i,j) for i in range(5) for j in list('ABCD')]
等价于
for i in range(5):
for j in list('ABCD'):
a.append((i,j))1
a=[i*2 for i in range(5)]
1
a = [i for i in range(5) if i < 3]
1
2
3
4
5
6
7
8
9def gen(x):
yield n
yield n+1
g=gen(1)
for i in g:
print(g)
每调用一次gen函数,依次得到一个yield1
2
3
4
5
6
7
8生成器表达式
g = (i for i in range(10))
#只是生成了一个生成器,内存大小不随range改变,只有当调用个时才会生产yield
for i in g:
print(g)1
2
3
4
5a = (20,8)
a1,a2=a——标准的元组解包
print(divmod(*a))#省去显示拆包1
2
3
4a1,*rest=range(0,5)
#a1为第一个元素,剩下的放在rest里面,为列表
a1,*rest,a2=range(0,5)
#a1,a2单独,剩下的放rest列表1
2
3
4嵌套解包
city=[('Hangzhou','Zhejiang',('0571','310000')),('Guangdong','Guangzhou',('0755','210000'))]
for name,prov,(code,postcode) in city:
print(postcode)1
2
3
4
5
6
7
8a=range(5)
b=range(5,10)
a=a+b
>>>返回的list为新地址,和原本a的不一样
a+=b
>>>返回的list为原来的旧地址,和原本a一样