2016-10-13 13 views
0

DISLCAIMER:私は2既存の2-Dのリストを組み合わせることによって、Pythonで連結された2-Dのリストを作成したいのPythonを連結2つの2次元のリストに新しいリストに

に新しいです。私は2つのリストで始まる:

listA = [[a, b, c], [1, 2, 3]] 
listB = [[d, e, f], [4, 5, 6]] 

と私は(リスタとListBのを維持しながら)新しいリストを作りたい:

listC = [[a, b, c, d, e, f], [1, 2, 3, 4, 5, 6]] 

私は1次元のリストのようにそれらを追加しようとすると、I私も試してみました

listA + listB 
result = [[a, b, c], [1, 2, 3], [d, e, f], [4, 5, 6]] 

を:取得

listC = listA 
listC[0] += listB[0] 
listC[1] += listB[1] 

# This may be giving me the result I want, but it corrupts listA: 

Before: listA = [[a, b, c], [1, 2, 3] 
After: listA = [[a, b, c, d, e, f], [1, 2, 3, 4, 5, 6]] 

私が望むデータの新しいリストを作る正しい方法は何ですか?

また、私はタプルで仕事ができる:

listC = [(a, 1), (b, 2), (c, 3), (d, 4), (e, 5), (f, 6)] 

しかし、どちらかそのための方法を知りません。

現在、Python 2.7(raspbian Jessieを実行しているラズベリーパイ)を使用していますが、必要に応じてPython 3.4を使用できます。

答えて

1

リスト内包表記

listC = [a+b for a,b in zip(listA, listB)] 
2

でいくつかの方法があります。例えば、新しいリストを作成します。

listC = [listA[0] + listB[0], listA[1] + listB[1]] 

listC = [x + y for x, y in zip(listA, listB)] 

は、ここでは、2つの最も簡単な

+0

ありがとうございました!私は実際に自分自身のリスト(listA)+リスト(listB)に必要なものを見つけました。 – thuper

1

があれば、機能的なアプローチで、おそらくですあなたはもっと知りたい:

In [13]: from operator import add 
In [14]: from itertools import starmap 

In [15]: list(starmap(add, zip(listA, listB))) 
Out[15]: [['a', 'b', 'c', 'd', 'e', 'f'], [1, 2, 3, 4, 5, 6]] 

starmapは結果をリストに入れたくない場合は反復子を返します(結果を反復処理したいだけの場合など)、ここではlist()を使用しないでください。

+0

@downvoter私の答えが間違っていたら、それについて聞いて嬉しいです。 – Kasramvd

+1

'starmap'のアップノート –

関連する問題