Python 列表生成式
- 最传统的方法
a = [1, 2, 3, 4, 5]
- 稍微高级一点的方法
a = list(range(1, 6))
out:
[1, 2, 3, 4, 5]
对于简单的列表上面两种方法足矣,但是如果要生成复杂的列表,比如:
list = [1*1, 2*2, ...... , 9*9, 10*10]
- 方法一:使用循环语句进行创建
a = [] #创建一个空列表
for i in range(1, 11):
a.append(i * i) #往列表里添加元素
out:
[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
- 方法二:列表生成式
a = [i * i for i in range(1, 11)]
out:
[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
这句代码的意思就是从 range(1, 11)
中依次取出 i
并进行 i * i
运算,将 i * i
的值存入列表 a
列表生成式的原理依然很简单,但是灵活使用列表生成式可以让你的代码质量有一个质的飞跃
这里列举两种黑科技用法:
- 在
for
循环后使用if
判断语句筛选生成的元素
a = [i * i for i in range(1, 11) if i % 2 = 0]
out:
[4, 16, 36, 64, 100]
if
后面的 i % 2 = 0
即要求 i
是偶数,所以列表中的元素都是 range(1, 11)
中的偶数 i * i
的值
- 双重循环
a = [x + y for x in '123' for y in 'ABC']
out:
[‘1A’, ‘2B’, ‘3C’]
第一个循环遍历取得的 x
与第二个循环遍历取得的 y
相加后存入列表,同理:也可以有三重循环或者更多的多重循环