【发布时间】:2012-11-29 18:27:00
【问题描述】:
有没有办法在列表(或字典)理解中测试函数的返回?我想避免这样写:
lst = []
for x in range(10):
bar = foo(x)
if bar:
lst.append(bar)
并改用列表推导式。显然,我不想写:
[foo(x) for x in range(10) if foo(x)]
所以?
[foo(x) for x in range(10) if ??? ]
【问题讨论】:
-
为什么不想使用第一种方式呢?这是合适的方式。
-
@Rohit Jain -- 取决于
foo,这可能是一项昂贵的操作,您不想重复两次。 -
@mgilson:在第一个例子中,他只做了一次。
-
@TimPietzcker -- 啊……我以为 Rohit 指的是第一个列表理解……我现在正在关注评论流。谢谢。
-
@TimPietzcker.. 是的,我只是在谈论第一个列表理解。