展平列表列表
您有一個列表列表,並希望將其轉換為單一平面列表。例如,您可能有:
[ [1, 2, 3], [4, 5, 6], [7], [8, 9] ]
並旨在獲得:
[1, 2, 3, 4, 5, 6, 7, 8, 9]
解決方案
嵌套列表理解提供了一個嵌套列表優雅的展平清單清單的解決方案:
flat_list = [x for xs in xss for x in xs]
這段程式碼迭代xss中的每個子清單及其元素,將結果累積到 flat_list 中。
或者,您可以使用帶有連接的列表理解進行展平,或使用sum() 函數:
flat_list = [j for i in xss for j in i] flat_list = sum(xss, []) # or sum(xss)
效能比較
雖然這些方法提供了等效的結果,他們的表現各不相同。基準測試顯示,嵌套清單理解比其他方法快得多,特別是對於大型輸入清單。
這種卓越的性能源於以下事實:列表理解一次產生單一列表,僅複製每個項目一次。相較之下,基於 join 的方法會建立大量中間列表,而 sum() 方法涉及更複雜的操作。
遞歸方法
如果您的清單清單具有任意嵌套深度,您可能需要遞歸方法來完全展平。考慮以下函數:
def flatten_completely(xss): return [x for elem in xss for x in flatten_completely(elem) if not isinstance(x, list)] if isinstance(xss, list) else [xss]
以上是如何在 Python 中有效地展平列表列表?的詳細內容。更多資訊請關注PHP中文網其他相關文章!