Zipp通过迭代列表列表在python中列出

时间:2017-10-13 04:22:27

标签: python-2.7 list izip

我有两个列表列表如下。要合并它们,我通常会执行以下操作:

>>>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]]

2 个答案:

答案 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]]