在 Python 中,列表推導式是創建列表的強大工具。然而,Python 語言也引入了另一個類似的功能,稱為生成器表達式。
生成器表達式與列表推導式不同,因為它們不使用方括號 ([])。相反,它們使用括號 (),一次產生一個值。這一特性使它們比列表推導式更節省內存,因為它們會動態生成值,而無需在內存中創建完整的列表。
在提供的範例中,xrange(10) 中 _ 的 str(_) 為產生表示 0 到 9 數字的字串序列的產生器表達式。將此生成器表達式傳遞給 join 具有與使用列表理解相同的效果,但不需要 square
但是,需要注意的是,並非所有函數都可以接受生成器表達式。需要完整列表的函數,例如 sort 或 len,將需要明確列表。
記憶體效率和效能
一般來說,產生器表達式更佔記憶體 -比列表理解高效。然而,在連接的情況下,使用清單理解既更快又更節省記憶體。這是因為 join 需要對資料進行兩次傳遞,並且擁有一個真實的清單可以讓它立即開始工作。
在這種情況下,列表推導式相對於生成器表達式的性能優勢由以下Python timeit 說明基準測試:
因此,雖然生成器表達式在許多情況下提供記憶體效率優勢,但在做出選擇時考慮所使用函數的特定效能特徵非常重要列表推導式和生成器表達式之間。
以上是列表推導式與生成器表達式:何時應該在 Python 中使用括號而不是方括號?的詳細內容。更多資訊請關注PHP中文網其他相關文章!