是否有更短的写作方式
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>
但这会引入额外的缩进级别
答案 0 :(得分:5)
[b(x) for x in X if a(x)]
是最简单的,但会创建一个不必要的列表。
map(b, (x for x in X if a(x)))
将使用生成器,因此不会创建不需要的列表。
答案 1 :(得分:1)
不是每个人都喜欢以下内容,但我非常喜欢地图和过滤功能以便于阅读......
list(map(b, filter(a, X))
它将达到您想要的效果,我认为更容易看到发生了什么。