我需要做与此相反的事情
也就是说,我有一个元组列表
[(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的回答
总结:小列表的总和更快,但是大型列表的性能会显着下降.
>>> 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()转换调用.