以下是我的代码的简化示例。
>>> def action(num):
print "Number is", num
>>> items = [1, 3, 6]
>>> for i in [j for j in items if j > 4]:
action(i)
Number is 6
我的问题如下:将 for
循环简单地替换为仍会调用 Action
功能?即:
>>> (action(j) for j in items if j > 2)
Number is 6
最佳答案
这根本不应该使用生成器或理解。
def action(num):
print "Number is", num
items = [1, 3, 6]
for j in items:
if j > 4:
action(i)
生成器延迟计算。表达式 (action(j) for j in items if j > 2)
只会将生成器表达式返回给调用者。除非你明确地用尽它,否则它不会发生任何事情。列表理解急切地求值,但是,在这种特殊情况下,您会得到一个毫无意义的 list
。只需使用常规循环即可。
关于python - 使用理解而不是 for 循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38809247/