您可以使用内置any
函数将 的函数应用于生成器返回的任何项,而无需创建列表。可以这样实现:
any(installWow(x, 'installed by me') for x in wowList)
我发现这是您想要实现的最简洁的领域。
在内部,该installWow
函数确实返回None
,其False
逻辑运算结果为。any
基本上or
是对生成器返回的所有项目应用归约运算,这None
当然是全部,因此必须迭代生成器返回的所有项目。最后,它确实返回了False
,但这并不需要打扰您。好处是:不会将任何列表创建为副作用。
请注意,这仅在您的函数返回计算结果为False
,例如None
或0的情况下有效。如果它确实返回True
在某点计算的结果,例如,1
则不会将其应用于迭代器中的任何其他元素。为了安全起见,将此惯用法主要用于没有return语句的函数。