如何在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淺層列表的技術。
廣告
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP