我有两个列表列表如下。要合并它们,我通常会执行以下操作:
>>>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 :(得分: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]]
回答上一个问题:
使用list comprehension和两个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]]
答案 1 :(得分: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]]