使用Python將列表展平為單個元素
列表是Python中一種強大的資料結構,可以容納多種型別的多個值。我們可能會遇到巢狀列表,其中專案本身就是列表。在這種情況下,展平列表並從分層結構中檢索單個元素可能至關重要。在Python中,我們有一些內建函式——chain()、extend()和append()——可以用來解決將列表展平為單個元素的問題。
讓我們來看一個例子
輸入
# Flatten List my_list = [[11, 21, 31], [20, 30, 40], [4, 5, 6], [1, 2, 3]]
輸出
# individual element in the list [11, 21, 31, 20, 30, 40, 4, 5, 6, 1, 2, 3]
語法
以下語法在所有示例中都使用:
itertools.chain()
itertools是提供chain()內建函式的模組名稱。此函式將多個迭代器作為引數來返回單個迭代器。
extend()
extend()是Python中的內建方法,它在當前列表的末尾新增特定的列表元素。
append()
append()是Python中的內建方法,它可以在列表的末尾新增元素。
[[],[],[]]
以上表示巢狀列表結構。
使用巢狀迴圈
程式使用巢狀for迴圈迭代子列表,並使用append()方法將其轉換為單個元素。
示例
在下面的示例中,程式首先定義名為flatten_list的函式,該函式接受名為lst的引數(接收輸入列表的值)。然後在變數flattened中建立一個空列表,該列表將儲存包含單個元素的列表。接下來,使用巢狀for迴圈迭代列表中的每個子列表,並使用append()將其轉換為單個元素。然後使用函式返回獲取新列表。現在在變數nested_list中建立展平列表,並將相同的變數作為引數用於呼叫函式以將其儲存在變數f_list中。最後,我們藉助變數f_list列印結果。
def flatten_list(lst):
flattened = []
for sublist in lst:
for item in sublist:
flattened.append(item)
return flattened
# Create the flattened list
nested_list = [[10, 20, 30], [40, 50, 60], [70, 80, 90]]
# Calling function used in the variable
f_list = flatten_list(nested_list)
print("The individual element in the list:\n", f_list)
輸出
The individual element in the list: [10, 20, 30, 40, 50, 60, 70, 80, 90]
使用列表推導式
程式使用列表推導式,其中實現了巢狀for迴圈以將展平列表轉換為單個元素。
示例
在下面的示例中,程式首先定義名為flatten_list的函式,該函式接受名為lst的引數,用於儲存輸入列表的值。然後使用列表推導式返回函式,其中巢狀for迴圈迭代子列表。接下來,建立展平列表並將其儲存在變數n_list中。然後在變數f_list中使用呼叫函式,並在print函式中使用相同的變數以獲取結果。
def flatten_list(lst):
return [item for sublist in lst for item in sublist]
# Create the flatten list
n_list = [[11, 21, 31], [41, 51, 61], [71, 81, 91]]
# calling function used in the variable
f_list = flatten_list(n_list)
print("The individual element in the list:\n", f_list)
輸出
The individual element in the list: [11, 21, 31, 41, 51, 61, 71, 81, 91]
使用itertools.chain()函式
這是一個使用itertools模組展平巢狀列表的Python程式。flatten_list函式將巢狀列表作為引數,並返回一個包含子列表中所有元素的新列表。itertools.chain函式將所有子列表組合成一個可迭代物件,然後使用list函式將其轉換為列表。程式然後建立一個名為nested_list的巢狀列表,使用此列表作為引數呼叫flatten_list函式,並將結果賦值給變數flattened_list。
示例
在下面的示例中,程式首先匯入名為itertools的模組,這將有助於將展平列表轉換為單個元素。然後開始建立接受引數lst的flatten_list函式
import itertools
def flatten_list(lst):
return list(itertools.chain(*lst))
# Create the flatten list
nested_list = [[12, 22, 32], [42, 52, 62], [72, 82, 92]]
# Calling function used in the variable
flattened_list = flatten_list(nested_list)
print("The individual element in the list:\n", flattened_list)
輸出
The individual element in the list: [12, 22, 32, 42, 52, 62, 72, 82, 92]
使用遞迴
程式使用遞迴函式來處理展平列表,並使用內建函式isinstance()檢查物件的型別,從而幫助將展平列表生成單個元素。
示例
在下面的示例中,程式透過提取每個元素來迭代地展平構造的列表。然後,它列印包含巢狀列表中所有單個元素的展平列表。
def flatten_list(lst):
emp_list = []
for item in lst:
if isinstance(item, list):
emp_list.extend(flatten_list(item))
else:
emp_list.append(item)
return emp_list
# Create the flatten list
nested_list = [[81, 82, 83], [84, 85, 86], [87, 88, 89, 99, 100]]
f_list = flatten_list(nested_list)
print("The individual element in the list:\n", f_list)
輸出
The individual element in the list: [81, 82, 83, 84, 85, 86, 87, 88, 89, 99, 100]
結論
我們討論瞭解決問題陳述的各種方法。我們瞭解了列表展平如何為我們提供一項基本技能,使我們能夠更有效地處理複雜的資料結構並訪問單個元素。此外,無論我們是在進行資料處理、演算法問題解決還是任何其他Python程式設計作業或任務,瞭解如何展平列表都將非常有用。
資料結構
網路
關係資料庫管理系統(RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP