我想以特定的方式合并三个列表 考虑清单:
a = [ a1 , a2 , a3 , a4 ]
b = [ b1 , b2 , b3 , b4 ]
c = [ c1 , c2 , c3 , c4 ]
最后,我想获得一份清单清单:
res = [[a1,b1,c1],[a2,b2,c2]....[a4,b4,c4]]
我是Python的新手。有人可以帮助我吗?
答案 0 :(得分:7)
您可以尝试zip()
:
Python 2.x:
>>> a = [ 'a1' , 'a2' , 'a3' , 'a4' ]
>>> b = [ 'b1' , 'b2' , 'b3' , 'b4' ]
>>> c = [ 'c1' , 'c2' , 'c3' , 'c4' ]
>>>
>>> map(list, zip(a,b,c))
[['a1', 'b1', 'c1'], ['a2', 'b2', 'c2'], ['a3', 'b3', 'c3'], ['a4', 'b4', 'c4']]
Python 3.x:
>>> a = [ 'a1' , 'a2' , 'a3' , 'a4' ]
>>> b = [ 'b1' , 'b2' , 'b3' , 'b4' ]
>>> c = [ 'c1' , 'c2' , 'c3' , 'c4' ]
>>>
>>> [list(t) for t in zip(a,b,c)]
[['a1', 'b1', 'c1'], ['a2', 'b2', 'c2'], ['a3', 'b3', 'c3'], ['a4', 'b4', 'c4']]
3.x版本也可以在2.x中按预期工作,但我总是喜欢使用map
。 2.x版本在3.x中无法正常工作的原因是因为zip()
和map()
都被更改为返回迭代器。
答案 1 :(得分:2)
尝试:
x = zip(listA, listB, listC)
Python非常漂亮。现在这将为您提供元组,而不是列表中的列表。从元组转换为列表需要y = list(x)
调用。
答案 2 :(得分:0)
a=[1,2,3]
b=[4,5,6]
c=[7,8,8]
print zip(*[a,b,c])
[(1, 4, 7), (2, 5, 8), (3, 6, 8)]