1. ホーム
  2. python

[解決済み] リスト内包を副作用のためだけに使うのはPythonicか?

2022-08-25 14:20:53

質問

戻り値ではなく、その副作用のために呼び出している関数(画面への印刷、GUIの更新、ファイルへの印刷など)について考えてみてください。

def fun_with_side_effects(x):
    ...side effects...
    return y

さて、それは Pythonic で、この関数を呼び出すためにリスト内包を使います。

[fun_with_side_effects(x) for x in y if (...conditions...)]

リストはどこにも保存しないことに注意してください。

それとも、このfuncをこのように呼び出すべきでしょうか。

for x in y:
    if (...conditions...):
        fun_with_side_effects(x)

どちらが良いのか、またその理由は?

どのように解決するのですか?

この方法は非常に反Python的であり、経験豊富なPythonistaなら地獄を見ることでしょう。中間リストは作成後に捨てられ、潜在的に非常に、非常に大きくなり、したがって作成にコストがかかる可能性があります。