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

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

DDD
DDD原創
2024-12-30 01:53:09997瀏覽

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

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