简介
列表生成式/推导式(List Comprehensions),是Python提供的创建新列表的简明方法。
它由表达式,for循环以及括号组成,表达式可以是任何东西,通过表达式得到的结果,可以获得新的列表。
用法
通过一个列表,生成新的列表,一般的写法是这样:
list_old = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N']
list_new = []
for item in list_old:
list_new.append(item + item)
print(list_new)
#输出:['AA', 'BB', 'CC', 'DD', 'EE', 'FF', 'GG', 'HH', 'II', 'JJ', 'KK', 'LL', 'MM', 'NN']
但是这样写太繁琐了,不够优雅,而使用列表生成式呢?这样写:
list_old = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N']
list_new = [ item + item for item in list_old]
print(list_new)
#输出:['AA', 'BB', 'CC', 'DD', 'EE', 'FF', 'GG', 'HH', 'II', 'JJ', 'KK', 'LL', 'MM', 'NN']
结果是一样的,但是只用了一句话就实现了上面的功能。
如果要在旧列表中加入条件判断,筛选结果为true
的元素组成新列表,可以这么写:
list_old = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N']
#enumerate方法,可以同时获取索引与元素,然后筛选出索引为双数的元素
list_new = [item + item for index,item in enumerate(list_old) if index % 2 == 0]
print(list_new)
#输出:['AA', 'CC', 'EE', 'GG', 'II', 'KK', 'MM']
总结
完整的列表生成式的基本语法格式为:
[ expression for item in old_list if conditional ]
expression
表达式基于旧列表中的每个元素。
for item in old_list
遍历所有旧列表的元素
if conditional
带有if语句的过滤器
参考
廖雪峰Python教程 - 列表生成式
PythonForBeginners - List Comprehensions in Python