2017-08-16 50 views
0

的相应元素它应该像提取子表

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]]) 
+0

它不工作,因为你得到列表的长度,而不是让一个的长度的行,因此你的代码只能用于n * n个列表。 –

+0

ohkkk。得到它了。谢谢 – Sawan

回答

2

你通常会做的是Python使用zip功能:

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转换s,换成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

+0

寻找常见Python问题的窍门。 –