Python - 將列表中的列轉換為單獨的元素


在使用 Python 分析或處理資料時,我們會遇到需要重塑或重新整理給定列表以獲取具有不同列的列表的情況。我們可以透過下面討論的多種方法來實現這一點。

使用切片

我們可以對列表在某些元素處進行切片以建立列結構。在這裡,我們將給定的列表轉換為一個新列表,其中元素從中間拆分。我們使用了兩個 for 迴圈。外部迴圈將元素從第零個元素拆分到第二個元素,內部迴圈將元素從第二個元素拆分到最後一個元素。

示例

 即時演示

x = [[5,10,15,20],[25,30,35,40],[45,50,55,60]]
#Using list slicing and list comprehension
print ("The Given input is : \n" + str(x))
result = [m for y in [[n[2: ], [n[0:2]]] for n in x] for m in y]
print ("Converting column to separate elements in list of lists : \n" + str(result))

輸出

執行以上程式碼,我們將得到以下結果:

The Given input is :
[[5, 10, 15, 20], [25, 30, 35, 40], [45, 50, 55, 60]]
Converting column to separate elements in list of lists :
[[15, 20], [[5, 10]], [35, 40], [[25, 30]], [55, 60], [[45, 50]]]

itertools.chain() 和列表推導式

除了使用兩個 for 迴圈之外,我們還可以使用 itertools 中的 chain 方法。使用列表推導式,我們應用與上面相同的邏輯,並獲得結果,其中列在給定列表的中間被拆分。

示例

 即時演示

from itertools import chain
x = [[5,10,15,20],[25,30,35,40],[45,50,55,60]]
#Using list slicing and list comprehension
print ("The Given input is : \n" + str(x))
res = list(chain(*[list((n[2: ], [n[0:2]]))
   for n in x]))
print ("Converting column to separate elements in list of lists : \n" + str(res))

輸出

執行以上程式碼,我們將得到以下結果:

The Given input is :
[[5, 10, 15, 20], [25, 30, 35, 40], [45, 50, 55, 60]]
Converting column to separate elements in list of lists :
[[15, 20], [[5, 10]], [35, 40], [[25, 30]], [55, 60], [[45, 50]]]

更新於: 2020年2月26日

245 次檢視

開啟您的 職業生涯

透過完成課程獲得認證

開始學習
廣告