一个简单的列表生成式
在列表生成式中,条件操作写在最前面,后边加上 for 循环就可以获取一个新的 list
>>> n = [x**x for x in range(1, 11)]
>>> print(n)
[1, 4, 27, 256, 3125, 46656, 823543, 16777216, 387420489, 10000000000]
加上条件筛选的列表生成式
条件判断加载尾部,只获取符合条件的 list 成员(执行x**x之前)的结果
>>> n = [x**x for x in range(1, 11) if x < 5]
>>> print(n)
[1, 4, 27, 256]
两层循环的列表生成式
两层循环一一组合,n 的长度可见为 5 × 10 = 50 就是一个双重 for 循环
>>> n = [a+b for a in range(1, 6) for b in range(1, 11)]
>>> print(n)
[2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 4, 5, 6, 7, 8,
9, 10, 11, 12, 13, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 6, 7, 8, 9, 10, 11, 12, 1
3, 14, 15]
>>> len(n)
50
加上方法的列表生成式
>>> n = [str(a) for a in range(1, 6)]
>>> print(n)
['1', '2', '3', '4', '5']
>>> def sum(x, y):
... return x+y
...
>>> n = [sum(a,b) for a in range(1, 6) for b in range(1, 6)]
>>> print(n)
[2, 3, 4, 5, 6, 3, 4, 5, 6, 7, 4, 5, 6, 7, 8, 5, 6, 7, 8, 9, 6, 7, 8, 9, 10]
>>> len(n)
25
总结
列表生成式是实现极简代码的一种重要途径,如何写出优美易读的Python程序这是值得我们思考的一件事情