Python 两元组的合并

Python 两元组的合并,python,list,merge,tuples,Python,List,Merge,Tuples,我有两个元组a=('1',),('2',) 和b=('3',),('4',) 我需要像这样的输出 result = (('1',3',), ('2','4',)) 我曾尝试将元组转换为一个列表,并使用zip将其合并为一个元组tuple(zip(list(a),list(b)),以及tuple(zip(a,b)),其结果是('1',),('3',),('2',('4',) 我应该怎么做才能得到想要的结果?我看到了元组的不变性,但我正在从另一个服务获取元组,我所能做的就是将获取的元组转换为一个列表

我有两个元组
a=('1',),('2',)
b=('3',),('4',)

我需要像这样的输出

result = (('1',3',), ('2','4',))
我曾尝试将元组转换为一个列表,并使用
zip
将其合并为一个元组
tuple(zip(list(a),list(b))
,以及
tuple(zip(a,b))
,其结果是
('1',),('3',),('2',('4',)


我应该怎么做才能得到想要的结果?我看到了元组的不变性,但我正在从另一个服务获取元组,我所能做的就是将获取的元组转换为一个列表,以获得预期的输出。

可能是这样的吗

[i + x for i, x in zip(a, b)]

压缩是正确的方法,但是你仍然需要压扁成对的元组;您可以将它们连接起来:

result = tuple(x + y for x, y in zip(a, b))
或者,在压缩之前展平
a
b
元组:

也可以使用进行展平,这可能更具可读性:

from itertools import chain

result = tuple(zip(chain(*a), chain(*b)))
演示:


我在这里遇到的唯一问题是元组的大小不同。例如,当
b=(('3',),('4',),('5',)
时,结果没有
(''5')
。当它们大小不同时,如何使其工作?@NagarajanShanmuganathan:使用并提供
fillvalue
参数。对于第一个扁平化案例,即
'
,您将使用
('',)
from itertools import chain

result = tuple(zip(chain(*a), chain(*b)))
>>> a = (('1',), ('2',))
>>> b = (('3',), ('4',))
>>> tuple(x + y for x, y in zip(a, b))
(('1', '3'), ('2', '4'))
>>> tuple(zip((v for t in a for v in t), (v for t in b for v in t)))
(('1', '3'), ('2', '4'))
>>> from itertools import chain
>>> tuple(zip(chain(*a), chain(*b)))
(('1', '3'), ('2', '4'))