python之列表生成式
生成一个[1+1,2+2,3+3,4+4,……,10+10]的列表:
方法一
l1 = [] for i in range(1,11): l1.append(i+i) print(l1)
[2, 4, 6, 8, 10, 12, 14, 16, 18, 20]
方法二
l2 = [x+x for x in range(1,11)] print(l2)
[2, 4, 6, 8, 10, 12, 14, 16, 18, 20]
方法二中只需要一行代码就实现了方法一中的功能,方法二采用的便是列表生成式;
写列表生成式时,需要把表达式:x+x写在最前面,后面再跟for循环;
for循环后面还可以加上if判断
l3 = [x+x for x in range(1,11) if x % 2 == 0] print(l3)
[4, 8, 12, 16, 20]
for循环中还可以再嵌套for循环
l4 = [x+y for x in '123' for y in 'abc' ] print(l4)
['1a', '1b', '1c', '2a', '2b', '2c', '3a', '3b', '3c']
一个for循环中用两个变量生成列表
d = {'x': '1','y': '2','z': '3'}
l5 = [k + '=' + v for k,v in d.items()]
print(l5)
['x=1', 'y=2', 'z=3']
列表生成式中if……else的用法
1、for后面加if是一个筛选条件,不能带else
2、if在for前面必须加else,因为for前面是一个表达式
(在列表生成式中,for前面的if……else是表达式,for后面的if是过滤条件,不能带else)
l6 = [x if x % 2 == 0 else -x for x in range(1,11)] print(l6)
[-1, 2, -3, 4, -5, 6, -7, 8, -9, 10]

浙公网安备 33010602011771号