3

私は2つのリストを持っています:

a = [(1,2,3),(4,5,6)]

b = [7,8]

私はそれをマージしたい:

c = [(1,2,3,7),(4,5,6,8)]

使用zip(a,b)しましたが、結果が正しくないようです。誰でも助けることができますか?

4

7 に答える 7

6

zip()タプルと整数をペアにするだけです。また、タプルと新しいアイテムを連結する必要があります。

c = [aa + (bb,) 
     for aa, bb in zip(a, b)]
于 2012-10-03T14:26:24.663 に答える
5
>>> a = [(1,2,3),(4,5,6)]
>>> b = [7,8]
>>> c = zip(*a)+[b] #c looks like [(1,4),(2,5),(3,6),(7,8)]
>>> print zip(*c) #zip it back together
[(1, 2, 3, 7), (4, 5, 6, 8)]
>>>
于 2012-10-03T14:26:18.560 に答える
3

試す

map ( lambda x: x[0]+(x[1],), zip(a,b))
于 2012-10-03T14:24:34.350 に答える
2

そしてさらに別のバージョン:

from itertools import izip
[x+(y,) for x,y in izip(a,b)]

効率的である必要があり、それはあなたが実際に行っていることを読みやすい方法で表現します。

于 2012-10-03T14:29:09.823 に答える
2

そしてさらに別:

map(lambda t, e: t + (e,), a, b)

圧縮して解凍する必要はありません。map一度に両方のリストを取得できます。

于 2012-10-03T14:31:35.027 に答える
1

これは私には明らかなようです:

[x + (b[i],) for i,x in enumerate(a)]
于 2012-10-03T14:42:24.477 に答える
1
print((a[0]+(b[0],),a[1]+(b[1],)))
于 2012-10-03T14:26:50.013 に答える