如何在 Python 中將列表的列表展平為一個扁平列表?


巢狀列表是指其元素本身也是列表的列表。

例如:[[1,2,3], [4,5,6], [7,8,9]] 是一個巢狀列表,因為它有 3 個列表([1,2,3]、[4, 5, 6] 和 [7, 8, 9])作為其元素。

展平列表的列表(巢狀列表),即將其轉換為一維列表,有多種方法,例如巢狀 for 迴圈、列表推導式、內建函式或透過在 Python 中匯入庫。

在本文中,我們將討論以上在 Python 中展平列表的方法。

使用 for 迴圈

要重複遍歷序列,請使用 for 迴圈(即列表、元組、字典、集合或字串)。此功能更類似於在其他面向物件程式語言中看到的迭代器方法,並且不太像在其他程式語言中找到的 for 關鍵字。

示例

在以下示例程式碼中,我們必須將巢狀列表轉換為扁平列表,即單個一維列表。因此,我們使用了append()方法將元素新增到列表中。

def flatlist(l): flat_list = [] for element in l: if type(element) is list: for item in element: flat_list.append(item) else: lat_list.append(element) return flat_list lst = [[10, 20, 30, 40], [50, 60, 70], [80, 90, 100]] print('Original List', lst) print('Flattend List', flatlist(lst))

輸出

執行上述程式後,將獲得以下輸出。

Original List [[10, 20, 30, 40], [50, 60, 70], [80, 90, 100]]
Flattend List [10, 20, 30, 40, 50, 60, 70, 80, 90, 100]

使用列表推導式

Python 的列表推導式功能使從現有列表構建新列表變得簡單。它提供了一種更簡潔的語法,用於從現有列表及其值構建新列表。

示例

在此示例中,巢狀列表使用列表推導式方法轉換為單個一維列表。

original_list = [[10, 20, 30, 40], [50, 60, 70], [80, 90]] flat_list = [item for sublist in original_list for item in sublist] print('Original list', original_list) print('Flattend list', flat_list)

輸出

執行上述程式後,將獲得以下輸出。

 Original list [[10, 20, 30, 40], [50, 60, 70], [80, 90]]
Flattend list [10, 20, 30, 40, 50, 60, 70, 80, 90]

使用 NumPy 庫

NumPy 是一個用於處理陣列的通用包。它提供了一個多維陣列物件,具有極快的速度以及與這些陣列互動的功能。

示例

在下面的示例中,我們使用了 NumPy 庫及其中的其他方法。這些方法如下所述。

  • concatenate()函式用於連線一系列陣列。

  • flat()函式用作 N 維陣列上的一維迭代器。

import numpy originallist = [[10, 20, 30, 40], [50, 60, 70], [80, 90]] flatlist = list(numpy.concatenate(originallist).flat) print('Original list', originallist) print('Transformed list', flatlist)

輸出

執行上述程式後,將獲得以下輸出。

Original list [[10, 20, 30, 40], [50, 60, 70], [80, 90]]
Transformed list [10, 20, 30, 40, 50, 60, 70, 80, 90]

更新於: 2022年11月8日

278 次瀏覽

啟動您的 職業生涯

透過完成課程獲得認證

開始
廣告