pythonic方式爆炸元组列表

Ste*_*ini 6 python list

我需要做与此相反的事情

Python中的多元组到双组元组?

也就是说,我有一个元组列表

[(1,2), (3,4), (5,6)]
Run Code Online (Sandbox Code Playgroud)

并需要产生这个

[1,2,3,4,5,6]
Run Code Online (Sandbox Code Playgroud)

我个人会这样做

>>> tot = []
>>> for i in [(1,2), (3,4), (5,6)]:
...     tot.extend(list(i))
Run Code Online (Sandbox Code Playgroud)

但是我希望看到一些比较漂亮的东西.

Nad*_*mli 20

最有效的方法是:

tuples = [(1,2), (3,4), (5,6)]
[item for t in tuples for item in t]
Run Code Online (Sandbox Code Playgroud)

产量

[1, 2, 3, 4, 5, 6]
Run Code Online (Sandbox Code Playgroud)

这是我在一个重复的问题中以各种方式做的比较.

我知道有人会建议这个解决方案

sum(tuples, ())
Run Code Online (Sandbox Code Playgroud)

但是不要使用它,它将为每一步创建一个新的中间结果列表!除非你不关心性能,只想要一个紧凑的解决方案.有关详细信息,请查看Alex的回答

总结:小列表的总和更快,但是大型列表的性能会显着下降.


Tim*_*ker 6

>>> import itertools
>>> tp = [(1,2),(3,4),(5,6)]
>>> lst = list(itertools.chain(*tp))
>>> lst
[1, 2, 3, 4, 5, 6]
Run Code Online (Sandbox Code Playgroud)

当然,如果您不需要列表而是迭代器,则可以删除list()转换调用.