如何在 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]
廣告