Python 列表推导式
列表推导式是一种非常强大的编程工具。它类似于数学中的集合构建符号。它是一种通过对现有列表中的每个项目执行某种过程来创建新列表的简洁方式。列表推导式比通过 for 循环处理列表的速度要快得多。
示例1
假设我们想要分离字符串中的每个字母,并将所有非元音字母放入一个列表对象中。我们可以通过 for 循环来实现,如下所示-
chars=[]
for ch in 'TutorialsPoint':
if ch not in 'aeiou':
chars.append(ch)
print (chars)
字符列表对象的显示如下 –
['T', 't', 'r', 'l', 's', 'P', 'n', 't']
列表推导技术
通过列表推导技术,我们可以轻松地获得相同的结果。列表推导的一般用法如下所示:
listObj = [x for x in iterable]
应用此方法,可以通过以下语句构建字符列表 –
chars = [ char for char in 'TutorialsPoint' if char not in 'aeiou']
print (chars)
字符列表将如之前所示 –
['T', 't', 'r', 'l', 's', 'P', 'n', 't']
示例2
以下示例使用列表推导来构建一个由1到10之间数字的平方组成的列表
squares = [x*x for x in range(1,11)]
print (squares)
方块列表对象是-
[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
列表推导中的嵌套循环
在下面的例子中,以元组的形式将两个列表的所有组合添加到第三个列表对象中。
示例3
list1=[1,2,3]
list2=[4,5,6]
CombLst=[(x,y) for x in list1 for y in list2]
print (CombLst)
这将会产生以下的输出: output −
[(1, 4), (1, 5), (1, 6), (2, 4), (2, 5), (2, 6), (3, 4), (3, 5), (3, 6)]
列表推导式中的条件
以下语句将创建一个包含1到20之间所有偶数的列表。
示例4
list1=[x for x in range(1,21) if x%2==0]
print (list1)
它将产生以下 输出 –
[2, 4, 6, 8, 10, 12, 14, 16, 18, 20]