考虑一下我要调用的函数的副作用,而不是返回值(例如打印到屏幕,更新GUI,打印到文件等)。
def fun_with_side_effects(x): ...side effects... return y
现在,使用列表推导功能将此功能称为Pythonic:
[fun_with_side_effects(x) for x in y if (...conditions...)]
请注意,我不会将列表保存在任何地方
还是我应该这样称呼这个函数:
for x in y: if (...conditions...): fun_with_side_effects(x)
哪个更好?为什么?
这样做是非常反Python的,任何经验丰富的Pythonista都会为你带来麻烦。中间列表在创建之后就被丢弃了,它可能非常大,因此创建起来很昂贵。
Pythonista