如何在Python中展平淺層列表?


展平淺層列表意味著將巢狀列表轉換為簡單的單維度列表。換句話說,就是將多維列表轉換為一維列表。

展平過程可以使用不同的技術來執行,例如巢狀 for 迴圈、列表推導式、列表連線以及使用內建函式。

在本文中,我們將討論幾種展平 Python 淺層列表的技術。

使用巢狀 for 迴圈

透過使用巢狀 for 迴圈和 list.append() 方法,我們可以展平淺層列表。讓我們來看一下如何在程式中完成此操作。

示例

這個簡單的示例透過使用巢狀 for 迴圈成功地展平了一個淺層列表。第一個迴圈用於迭代列表中的子列表,第二個迴圈用於迭代子列表中的專案。

li = [[10, 20, 30, 40], [50, 60, 70, 80], [90, 100, 110, 120]]
print("Original shallow list:", li)

flatlist = []   
for sub_li in li:
    for ele in sub_li:
        flatlist.append(ele)
print("After flattening :", flatlist)

輸出

Original shallow list: [[10, 20, 30, 40], [50, 60, 70, 80], [90, 100, 110, 120]]
After flattening : [10, 20, 30, 40, 50, 60, 70, 80, 90, 100, 110, 120]

使用列表推導式

此技術與巢狀 for 迴圈非常相似,就像上面的解決方案一樣,使用列表推導式打包成一行。

列表推導式是一種簡單而優雅的基於現有可迭代物件(列表、字串、元組)建立列表的方法。

語法

newList = [ expression(element) for element in oldList if condition ]

示例

我們使用列表推導式方法在一行程式碼中展平了一個淺層列表。

li = [[10, 20, 30, 40], [50, 60, 70, 80], [90, 100, 110, 120]]
print("Original shallow list:", li)

flatlist = [ele for ele in sub_li for sub_li in li]   

print("List after flattening :", flatlist)

輸出

Original shallow list: [[10, 20, 30, 40], [50, 60, 70, 80], [90, 100, 110, 120]]
List after flattening : [90, 90, 90, 100, 100, 100, 110, 110, 110, 120, 120, 120]

使用 itertools (chain())

chain() 方法接受一系列可迭代物件,然後返回一個單一的可迭代物件,該物件不能直接使用,必須顯式轉換。要訪問 chain() 方法,我們需要先將 itertools 模組匯入到我們的程式中。

語法

chain (*iterables)

示例

為了解包巢狀列表,我們使用了 * 運算子。

import itertools

li = [[10, 20, 30, 40], [50, 60, 70, 80], [90, 100, 110, 120]]
print("Original shallow list:", li)

flatlist = list(itertools.chain(*li))
print("List after flattening :", flatlist)

輸出

Original shallow list: [[10, 20, 30, 40], [50, 60, 70, 80], [90, 100, 110, 120]]
List after flattening : [10, 20, 30, 40, 50, 60, 70, 80, 90, 100, 110, 120]

使用 sum() 函式

對內部列表(子列表)求和是另一種解決方案。在這裡,我們將使用 Python 內建函式 sum()。

語法

sum(iterable, start)

示例

在這個示例中,引數 iterable 接受一個列表的列表,start 是一個空列表,作為初始扁平列表,內部子列表的專案將新增到其中。

li = [[1, 2, 3, 4], [5, 6, 7], [8, 9]]
print("Original shallow list:", li)

faltlist = sum(li, [])
print("List after flattening :", faltlist)

輸出

Original shallow list: [[1, 2, 3, 4], [5, 6, 7], [8, 9]]
List after flattening : [1, 2, 3, 4, 5, 6, 7, 8, 9]

我們討論了幾種展平 Python 淺層列表的技術。

更新於:2023年8月24日

1K+ 次瀏覽

開啟你的職業生涯

完成課程獲得認證

開始學習
廣告
© . All rights reserved.