首頁 >後端開發 >Python教學 >如何在 Python 中有效地展平列表列表?

如何在 Python 中有效地展平列表列表?

Patricia Arquette
Patricia Arquette原創
2024-12-30 18:14:10429瀏覽

How Can I Efficiently Flatten a List of Lists in Python?

展平列表列表

您有一個列表列表,並希望將其轉換為單一平面列表。例如,您可能有:

[
    [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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn