如何组合两个相同索引长度的2d列表?

时间:2017-07-22 13:19:10

标签: python list python-3.x

我对python很新,我有一点问题。

我需要像这样组合两个2D列表:

list1= [['a','b','c'],['d','e']]
list2= [[1,2,3],[4,5]]

结果应该是这样的:

result= [['a1','b2','c3'],['d4','e5']]

1 个答案:

答案 0 :(得分:2)

我们可以使用嵌套列表理解和两个zip(..) s:

[ [ '%s%s'%zi for zi in zip(*z) ] for z in zip(list1,list2) ]

这将产生:

>>> list1= [['a','b','c'],['d','e']]
>>> list2= [[1,2,3],[4,5]]
>>> [ [ '%s%s'%zi for zi in zip(*z) ] for z in zip(list1,list2) ]
[['a1', 'b2', 'c3'], ['d4', 'e5']]

外部循环因此并行迭代两个列表list1list2,并构造我们分配给z的元组。对于这些元组中的每一个,我们执行第二次zip调用zip(*z)来构造两个子元素的元组。对于每个子元素,我们然后使用'%s%s'%zi构建一个字符串。

或者您可以将其显式转换为字符串,例如:

[ [ ''.join(map(str,zi)) for zi in zip(*z) ] for z in zip(list1,list2) ]