首頁 > 後端開發 > Python教學 > 在 Python 中使用列表推導式實作副作用是否被視為 Pythonic?

在 Python 中使用列表推導式實作副作用是否被視為 Pythonic?

Mary-Kate Olsen
發布: 2024-12-19 06:58:10
原創
383 人瀏覽過

Is Using List Comprehensions for Side Effects in Python Considered Pythonic?

副作用的列表推導式:Pythonic 方法

在 Python 中,列表推導式通常用於從現有序列建立新列表。但是,使用列表推導式來消除其副作用可能很誘人,例如列印到螢幕或更新圖形使用者介面。

考慮以下函數,它會執行副作用但不會傳回任何有意義的值:

def fun_with_side_effects(x):
    # ...side effects...
    return None
登入後複製

問題出現了:使用列表呼叫這個函數是Pythonic嗎

[fun_with_side_effects(x) for x in y if (...conditions...)]
登入後複製

或者,可以使用標準for循環呼叫函數:

for x in y:
    if (...conditions...):
        fun_with_side_effects(x)
登入後複製

雖然列表推導式看起來像是一種簡潔而有效的解決方案,但它們被認為是反-在這種情況下Pythonic。這是因為中間列表被創建,然後立即被丟棄,這既浪費又計算成本高,特別是當序列很大時。

for 循環方法比較 Pythonic,因為它避免了建立不必要的清單。它也更有效率,因為它只在必要時呼叫 fun_with_side_effects。

因此,在呼叫有副作用的函數時,建議使用 for 迴圈語法。這種方式遵循Pythonic原則並確保程式碼效率。

以上是在 Python 中使用列表推導式實作副作用是否被視為 Pythonic?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板