1

特定の方法で 3 つのリストをマージしたいと考えています。
リストを検討してください:

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の初心者です。誰かが私を助けることができますか?

4

3 に答える 3

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()の両方が反復子を返すように変更されたためです。

于 2013-10-22T18:36:05.627 に答える
2

試す:

x = zip(listA, listB, listC)

Pythonはそのように美しいです。これで、リスト内のリストではなく、タプルが得られます。タプルからリストへの変換にはy = list(x)呼び出しが必要です。

于 2013-10-22T18:36:05.093 に答える
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)]
于 2013-10-22T18:38:12.557 に答える