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

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

DDD
發布: 2024-12-30 01:53:09
原創
993 人瀏覽過

How Can I Efficiently Flatten a Shallow List in Python?

在Python 中展平淺列表

在Python 中,展平可迭代的淺列表可能是將嵌套結構轉換為單級列表的常見任務。有多種方法可以實現此目的,但效能和程式碼可讀性程度各不相同。

最初的嘗試可能涉及嵌套列表理解,如下所示:

[image for image in menuitem for menuitem in list_of_menuitems]
登入後複製

但是,這將遇到 NameError,因為「menuitem」未在外部理解的範圍內定義。

另一個選擇是使用reduce函數:

reduce(list.__add__, map(lambda x: list(x), list_of_menuitems))
登入後複製

雖然此方法會展平列表,但使用list(x) 呼叫將QuerySet 物件轉換為列表可能會妨礙其可讀性。

一種高效而優雅的解決方案由 itertools 模組提供,特別是 itertools.chain。它允許在資料結構的扁平化版本上進行迭代,而無需創建新列表:

from itertools import chain
list(chain(*list_of_menuitems))
登入後複製

這種方法避免了將項目複製到新列表中,從而減少了開銷。避免使用解包運算子 * 的稍微更明確的版本是:

chain = itertools.chain.from_iterable([[1, 2], [3], [5, 89], [], [6]])
print(list(chain))  # [1, 2, 3, 5, 89, 6]
登入後複製

這些技術對於展平淺列表同時平衡效能和可讀性非常有價值。

以上是如何在 Python 中有效地展平淺列表?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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