2017-09-25 4 views
0

の別のリストにリストインデックスを追加すると、私は下のリストを持っていることです。私は何をする必要があるかちょっとリスト

g=[[1,2,3],[4,5,6],[7,8,9]] 
h=[[10,11,12,13],[14,15,16,17]] 

と私はリストグラムにリストさhから最初のインデックスを追加取得する必要があります。結果は以下のリストのようにする必要があります:

g=[[1,2,3,10,14],[4,5,6,11,15],[7,8,9,12,16]] 

、これは私がこれまでにやっていることが、それは働いていない:

g=[[1,2,3],[4,5,6],[7,8,9]] 
h=[[10,11,12,13],[14,15,16,17]] 
for i in range(len(g)): 
    for u in range(len(g[0])): 
     g[i].append(h[i][u]) 

答えて

1
g=[[1,2,3],[4,5,6],[7,8,9]] 
h=[[10,11,12,13],[14,15,16,17]] 

idx = 0 
for L1 in g: 
    for L2 in h: 
     L1.append(L2[idx]) 
    idx+=1 

g 

戻り

[[1, 2, 3, 10, 14], [4, 5, 6, 11, 15], [7, 8, 9, 12, 16]] 

幸運!

+0

多くの人に助けてくれたおかげです。 –

+0

'enumerate'を使うのが良いでしょう。 –

0

別の方法:リスト内包がg
[*next(hz)](又はlist(next(hz)))を通って歩くよう

hコンテンツ(*h)、next(hz)オートインクリメントからジップオブジェクトhzを作るには、リストにジップ物体からタプルを変換します

g =[[1,2,3],[4,5,6],[7,8,9]] 
h=[[10,11,12,13],[14,15,16,17]] 

hz = zip(*h) 
g = [e + [*next(hz)] for e in g] 

g 
Out[133]: [[1, 2, 3, 10, 14], [4, 5, 6, 11, 15], [7, 8, 9, 12, 16]] 

といくつかのための目標は、 'ワンライナー' です:

g = [e + list(f) for e, f in zip(g, zip(*h))] 
0

あなたはenumerate()とリストの内包表記を使用する場合は、あなたがより速くワンライナー行うことができます。

g = [n + [m[i] for m in h] for i, n in enumerate(g)] 
# Returns: [[1, 2, 3, 10, 14], [4, 5, 6, 11, 15], [7, 8, 9, 12, 16]] 
0

私は時間の代わりに、グラム以上の外側のループを作ると思いますが。索引は必要ありません。すなわち

>>> g = [[1,2,3],[4,5,6],[7,8,9]] 
>>> h = [[10,11,12,13],[14,15,16,17]] 
>>> for hlist in h: 
     for glist, hvalue in zip(g, hlist): 
      glist.append(hvalue) 

>>> g 
[[1, 2, 3, 10, 14], [4, 5, 6, 11, 15], [7, 8, 9, 12, 16]] 

:代わりに各G-リストを取り、H-リストから追加の値をフェッチする、各H-リストを取り、G-リスト上にその値を広げます。

関連する問題