本篇参考官方文档: The PythonTutorial:5.Data Structures
列表推导式其实很简单,看一遍官方文档就可以了。
列表推导式提供了一个构造列表的简介的方法。通常的用途有制作一个新的列表,这个列表的每一个元素都是把一个操作作用于另一个序列或迭代器得到的;或者制作一个满足某些条件的子序列。
例如,加入我们想制作一个平凡列表,像:
>>> squares = [] >>> for x in range(10): ... squares.append(x**2) ... >>> squares [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
我们可以这样得到一样的结果:
squares = [x**2 for x in range(10)]
短短几句话就把列表推导的目的说明白了,还举了一个简单的例子。我们继续看:
一个列表推导式由括号组成,括号里包含一个表达式,这个表达式后面跟着个
for
,其后可能有0个或多个for
或if
。一个新的列表就这样产生了:在for
和if
的语境(context)下计算那个表达式。比如:
>>> [(x, y) for x in [1,2,3] for y in [3,1,4] if x != y] [(1, 3), (1, 4), (2, 3), (2, 1), (2, 4), (3, 1), (3, 4)]
跟这个是等效的:
>>> combs = [] >>> for x in [1,2,3]: ... for y in [3,1,4]: ... if x != y: ... combs.append((x, y)) ... >>> combs [(1, 3), (1, 4), (2, 3), (2, 1), (2, 4), (3, 1), (3, 4)]