不帶方括號的 Python 列表理解
使用 Python 的「join」函數時,需要一個可迭代物件作為參數。通常,列表推導式括在方括號中,但也可以省略它們。這種看似矛盾的行為提出了一個問題:表達式「str(_) for _ in xrange(10)」會產生列表還是可迭代物件?
產生器表達式
解釋在於 Python 的產生器表達式,它具有與列表推導式類似的表示法,但缺少方括號。生成器表達式根據需要一次產生一個元素,從而使它們具有記憶體效率和高效能。
在「join」範例中,「str(_) for _ in xrange(10)」是一個產生器表達式,它惰性地產生從 0 到 9 的數字的字串表示形式。此生成器表達式是一個可迭代的,它滿足「join」函數的要求。
效能注意事項
雖然產生器表達式通常比清單理解提供效能優勢,但「連結」的情況並不總是如此。 「join」函數需要兩次傳遞數據,因此,將整個列表儲存在記憶體中會受益匪淺。因此,列表理解(“[str(_) for in xrange(10)]”)優於生成器表達式(“str(_) for in xrange(10)”)加入”上下文。基準測試證實了這個效能優勢。程式碼至關重要。
以上是Python 中的 `str(_) for _ in xrange(10)` 是 List 還是 Iterable?的詳細內容。更多資訊請關注PHP中文網其他相關文章!