產生包含重複元素的清單是 Python 程式設計中的常見任務。雖然清單推導式是實現此目的的便捷方法,但還有其他可以提供更高效率或靈活性的方法。
其中一種方法是使用 * 運算子將元素複製 n 次。例如,要建立一個包含 10 個零的列表,我們可以簡單地編寫:
[0] * 10
當要重複的元素是可變物件時,此方法特別有用。例如,在下面的程式碼中,我們建立一個包含10 個空列表的列表:
[[]] * 10
在這種情況下,列表的每個元素都是一個不同的空列表,這與使用列表理解時不同,其中所有元素元素將引用同一個列表。
需要注意的是,使用 * 複製元素不會為每個元素建立一個新物件。相反,它創建對同一物件的多個引用。當元素是複雜物件時,這可能是一個效能優勢,因為它避免了創建多個副本。
雖然效能基準測試最初表明itertools 模組中的重複函數對於創建具有重複元素的列表更快,但它是重要的是要考慮到重複實際上並不返回列表,而是延遲生成元素的迭代器。將迭代器轉換為列表會帶來額外的效能開銷。
因此,如果目標是立即建立列表,那麼使用 [e] * n 是首選方法。但是,如果需要延遲生成元素,則重複函數可以在記憶體消耗和程式碼可讀性方面提供好處。
以上是如何在Python中有效率地建立包含重複元素的清單?的詳細內容。更多資訊請關注PHP中文網其他相關文章!