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)

它将产生以下输出-

[(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]