我有一个分割列表的功能, 例子
def split(*arg):
row = len(arg[0])
col = len(arg)
new = [row * col]
for i in row:
for j in col:
new[j][i] = arg[i][j]
return new
# this is method for split the list but it is include errors
期望的输出:
list_a = [(1,2,3),(8,9,10),(100,20,15)]
split (list_a)
[(1,8,100),(2,9,20),(3,10,15)]
答案 0 :(得分:0)
这与Transpose nested list in python非常相似。
但是,您需要一个元组列表作为结果,因此我们甚至不需要列表理解。刚
list_a = [(1,2,3),(8,9,10),(100,20,15)]
zip(*list_a) # Python 2
# or
list(zip(*list_a)) # Python 3
# [(1, 8, 100), (2, 9, 20), (3, 10, 15)]
答案 1 :(得分:0)
基于所需的输出,您似乎正在尝试找到transpose,因此您可以使用numpy这样做:
import numpy
list_a = [(1,2,3),(8,9,10),(100,20,15)]
transpose_a = numpy.transpose(list_a)
print(transpose_a)
#or
#print(list(transpose_a))
但由于以下几个原因导致split
出现故障:
split(*list_a)
new = [row * col]
正在创建一个包含一个项目的新列表,而不是two dimensional list。range(row)
和range(col)
。row = len(arg)
和col = len(arg[0])
,因为您将第一维用作行,第二列使用第一列。虽然我发现这是zip
设计的目的,但您可能只需要使用它。