提取子列表的相应元素

时间:2017-08-16 11:34:14

标签: python

它应该像

一样工作
input: list([[1,1,1],[2,2,2],[3,3,3]])
output: [[1,2,3], [1,2,3], [1,2,3]]
到目前为止,我已经这样做了:

def list(m):
    list2=[]
    for i in range(0, len(m)):
            list2.append([x[i] for x in m])
    return(list2)

每次都不起作用..

例如:

它适用于

input: list([[1,1,1],[2,2,2],[3,3,3]])

但不适用于

input: list([[1,3,5],[2,4,6]])

1 个答案:

答案 0 :(得分:2)

您通常会使用zip函数在Python中执行此操作:

inp = list([[1,1,1],[2,2,2],[3,3,3]])
output = list(map(list, zip(*inp)))
print(output)
>>> [[1, 2, 3], [1, 2, 3], [1, 2, 3]]

额外的map调用是将zip返回的元素tuple转换为list s,但如果你对元组没问题,你可以只是做:

inp = list([[1,1,1],[2,2,2],[3,3,3]])
output = list(zip(*inp))
print(output)
>>> [(1, 2, 3), (1, 2, 3), (1, 2, 3)]

此外,外部list仅在Python 3中是必需的,其中zip返回生成器,但不在Python 2中。