python转置除第一列以外的列表列表
我们可以使用python转置除第一列以外的列表列表,python,list,transpose,Python,List,Transpose,我们可以使用 map(list, zip(*l)) 除了内部列表的第一个元素外,我们是否可以更改上面命令中的某些内容以转置以下列表 l = [["item1",1,2,3],["item2",4,5,6],["item3",7,8,9]] 我想要的结果是 r = [["item1",1,4,7],["item2",2,5,8],["item3",3,6,9]] 如果你想使用熊猫,有更简单的方法 headers = [item[0] for item in l] data = [item[1
map(list, zip(*l))
除了内部列表的第一个元素外,我们是否可以更改上面命令中的某些内容以转置以下列表
l = [["item1",1,2,3],["item2",4,5,6],["item3",7,8,9]]
我想要的结果是
r = [["item1",1,4,7],["item2",2,5,8],["item3",3,6,9]]
如果你想使用熊猫,有更简单的方法
headers = [item[0] for item in l]
data = [item[1:] for item in l]
r = map(list, zip(*data))
for i, item in enumerate(r):
item.insert(0, headers[i])
替代解决方案:
In [2]: it = [iter(x) for x in l]
In [3]: [list(x) for x in zip([next(x) for x in it], *it)]
Out[3]: [['item1', 1, 4, 7], ['item2', 2, 5, 8], ['item3', 3, 6, 9]]
首先,这将在l
(it
)的子列表上构建迭代器列表
[next(x)for x in it]
推进it
中的每个迭代器,并将结果(列表的第一个元素)收集到一个列表中,然后将该列表与it
中先前递增的迭代器一起压缩