定义
列表生成式即List Comprehensions,是一种可以用来创建列表的语法结构。
它的语法格式为:
x(i) for i in iterable if solution
列表生成式使用简单的一行语句就实现了相对复杂的功能,体现了Python代码的简洁性。上面的语句与下面的语句等效:
L = []
for i in iterable:
if solution:
L.append(x(i))
示例
如果list中既包含字符串和非字符串数据类型,使用列表生成式会报错,因为lower()方法仅限于字符串类型使用,修改列表生成式确保程序正确执行。
>>> L = ['Hello', 'World', 18, 'Apple', None]
>>> [s.lower() for s in L]
Traceback (most recent call last): File "", line 1, inFile "", line 1, inAttributeError: 'int' object has no attribute 'lower'
使用列表生成式语句如下:
L2 = [s.lower() for s in L if isinstance(s, str)]
与下面代码等效:
L2 = []
for s in L:
if isinstance(s, str):
L2.append(s.lower())
还可以使用两层循环,生成全排列。但是三层以上循环就很少用到列表生成式了。例子:
>>> [m + n for m in 'ABC' for n in' XYZ' ]
['AX','AY','AZ','BX','BY','BZ','CX','CY','CZ']
总结
列表生成式是快速生成新列表的一种方式。它的应用,引用我在网上看到的很认同的一句话来说,是根据已存在的可迭代对象推导出一个新的list。这里面的“可迭代对象”,可以是一个已有的列表,也可以是0,1,2……这种递增自然数数列。
参考资料
https://www.cnblogs.com/Mr-l/p/10587284.html
https://www.liaoxuefeng.com/wiki/1016959663602400/1017317609699776