2017-10-13 36 views
1

我有兩個列表如下。合併它們,我通常做到以下幾點:Zipp在Python中通過遍歷列表清單列表

>>>from itertools import imap, ilist 

>>>a = [1,2,3] 
>>>b = [4,5,6] 
>>> c = list(imap(list,izip(a,b))) 
>>> c 
[[1, 4]], [2, 5], [3, 6]] 

不過,現在我的目錄列表如下:

[[1,2,3], 
[4,5,6], 
[7,8,9], 
] 

我如何通過每個列表迭代並把它傳遞給izip功能獲得以下的輸出:

[[1,4,7],[2,5,8],[3,6,9]] 
+0

哪裏名單列表的最後一行是從哪裏來的?也許澄清一點輸入。 – atru

+0

是的..如果這使得它更清晰 – Amistad

+0

的重點是,可以有n個行..我想遍歷每一行,並得到如圖所示的最終輸出 – Amistad

回答

3

答案編輯問:

>>> input_list=[[1,2,3], 
[4,5,6], 
[7,8,9], 
] 

使用地圖和郵政編碼:

>>> map(list,zip(*input_list)) 
[[1, 4, 7], [2, 5, 8], [3, 6, 9]] 

使用IMAP和izip:

>>> list(imap(list,list(izip(*input_list)))) 
[[1, 4, 7], [2, 5, 8], [3, 6, 9]] 

回答前面的問題:

通過使用列表中理解和兩個for循環:

input_list =[[[1],[2],[3]], 
[[4],[5],[6]], 
[[7],[8],[9]], 
] 


out_list = [[] for i in range(len(input_list))] 
for each_row in input_list: 
    for i in range(len(each_row)): 
     out_list[i].extend(each_row[i]) 
print out_list 
輸入:
[[1, 4, 7], [2, 5, 8], [3, 6, 9]] 
+0

..我編輯了我的問題,通過簡化輸入..你可以修改你的答案嗎? – Amistad

+0

添加了答案@Amistad –

0

我覺得你需要的是這樣的:

input_list =[[1,2,3], 
     [4,5,6], 
     [7,8,9], 
     ] 
result = [] 

for i in range(len(input_list)): 
    temp = [] 
    for list in input_list: 
     temp.append(list[i]) 
    result.append(temp) 
print result 

結果將是:

[[1, 4, 7], [2, 5, 8], [3, 6, 9]]