一尘不染

如何在Python中合并任意数量的元组?

python

我有一个元组列表:

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

该列表可以是任意长度,元组也可以。我想按它们出现的顺序将其转换成元素的列表或元组:

f=[1,2,3,4,5,6] # or (1,2,3,4,5,6)

如果在开发时知道我会得到多少个元组,我可以添加它们:

m = l[0] + l[1]  # (1,2,3,4,5,6)

但是由于直到运行时我才知道会有多少个元组,所以我无法做到这一点。我觉得有一种方法可以使用map,但我无法弄清楚。我可以遍历元组并将其添加到累加器中,但是那样会创建很多永远不会使用的中间元组。我还可以遍历元组,然后遍历元组的元素,并将它们附加到列表中。这似乎效率很低。也许有一种更简单的方法可以让我完全忘却。有什么想法吗?


阅读 514

收藏
2021-01-20

共1个答案

一尘不染

链接它们(仅创建一个生成器,而不是保留额外的内存):

>>> from itertools import chain
>>> l = [(1,2,3),(4,5,6)]
>>> list(chain.from_iterable(l))
[1, 2, 3, 4, 5, 6]
2021-01-20