Skip to main content
 首页 » 编程设计

python之使用理解而不是 for 循环

2025年05月04日16开发

以下是我的代码的简化示例。

>>> 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。只需使用常规循环即可。