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]]]