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

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

Patricia Arquette
發布: 2024-12-30 18:14:10
原創
460 人瀏覽過

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

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板