我有两个列表:合并两个列表蟒蛇
a = [(1,2,3),(4,5,6)]
b = [7,8]
我想将它合并到:
c = [(1,2,3,7),(4,5,6,8)]
我用zip(a,b)
但结果似乎并不正确。谁能帮忙?
我有两个列表:合并两个列表蟒蛇
a = [(1,2,3),(4,5,6)]
b = [7,8]
我想将它合并到:
c = [(1,2,3,7),(4,5,6,8)]
我用zip(a,b)
但结果似乎并不正确。谁能帮忙?
>>> 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)]
>>>
尝试
map (lambda x: x[0]+(x[1],), zip(a,b))
比我的更好,更短...可能要在代码中提供意见,但您可能会忘记以后的工作 –
zip()
将刚配对的元组和整数。您还需要连接的元组和新的项目:
c = [aa + (bb,)
for aa, bb in zip(a, b)]
ISTM这是最为Pythonic的解决方案(我希望我不只是这么说,因为它就是这样我会做)。没有聪明和没有地图/ lambda组合,它只是做到了。 – DSM
print((a[0]+(b[0],),a[1]+(b[1],)))
而另一个版本:
from itertools import izip
[x+(y,) for x,y in izip(a,b)]
应该是有效的,它表示你真的在做一个可读的方式是什么。
而另一个:
map(lambda t, e: t + (e,), a, b)
无需压缩,解压缩; map
可以同时占用两个列表。
这是我最喜欢的答案...我不知道(没有真的考虑过它)你可以通过超过1列表映射...现在我做 –
@JoranBeasley,这将不会工作,如果'len(a) != len(b)'。 'map'用'None'填充多余部分,它会炸毁。 – st0le
@ st0le感谢您指出这一点!但是不会有例外情况比使用'zip'无声地丢弃元素更好吗? –
这似乎很清楚对我说:
[x + (b[i],) for i,x in enumerate(a)]
你的变量'了'是一个元组列表。 [tuple](http://docs.python.org/library/functions.html#tuple)是一个不可变的序列类型。 – Bryan
@beargle如果你不需要改变就地完成,那并不重要。 – millimoose
好的,我想他们想追加,而不是替换。 – Bryan