リスト内包表記を副作用のためだけに使うのはPythonっぽいですか?質問する

リスト内包表記を副作用のためだけに使うのはPythonっぽいですか?質問する

戻り値ではなく副作用のために呼び出す関数について考えます (画面への印刷、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)

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

ベストアンサー1

これは Python に反する行為であり、熟練した Pythonista なら誰でもこれを非難するでしょう。中間リストは作成後に破棄されるため、非常に大きくなる可能性があり、そのため作成コストが高くなります。

おすすめ記事