合并两个元组的元组

问题描述 投票:0回答:2

我有两个元组

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',)))

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

python list merge tuples
2个回答
3
投票

压缩是正确的方法,但你仍然必须展平你的配对元组;你可以连接它们:

result = tuple(x + y for x, y in zip(a, b))

或者,在

压缩之前压平您的 
a
b 元组:

result = tuple(zip((v for t in a for v in t), (v for t in b for v in t)))

扁平化也可以用

itertools.chain()

来完成,这可能更具可读性:

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'))
    

2
投票
也许是这样的?

[i + x for i, x in zip(a, b)]
    
© www.soinside.com 2019 - 2024. All rights reserved.