Python:for循环列表理解

时间:2017-03-12 11:28:06

标签: python for-loop list-comprehension

是否有更短的写作方式

for x in [x for x in X if a(x)]:
    <Do something complicated with x>

不幸的是,以下情况不起作用:

for x in X if a(x):
    <Do something complicated with x>

当然,我可以通过

达到预期的效果
for x in X:
    if a(x):
        <Do something complicated with x>

但这会引入额外的缩进级别

2 个答案:

答案 0 :(得分:5)

  1. [b(x) for x in X if a(x)]是最简单的,但会创建一个不必要的列表。

  2. map(b, (x for x in X if a(x)))将使用生成器,因此不会创建不需要的列表。

答案 1 :(得分:1)

不是每个人都喜欢以下内容,但我非常喜欢地图和过滤功能以便于阅读......

list(map(b, filter(a, X))

它将达到您想要的效果,我认为更容易看到发生了什么。