的名单,我需要做的这Python的方式爆炸的元组
Multiple Tuple to Two-Pair Tuple in Python?
即相反,我有元组
[(1,2), (3,4), (5,6)]
的列表,并需要产生这种
[1,2,3,4,5,6]
我会亲自做这个
>>> tot = []
>>> for i in [(1,2), (3,4), (5,6)]:
... tot.extend(list(i))
但我想看到的东西票友。
的名单,我需要做的这Python的方式爆炸的元组
Multiple Tuple to Two-Pair Tuple in Python?
即相反,我有元组
[(1,2), (3,4), (5,6)]
的列表,并需要产生这种
[1,2,3,4,5,6]
我会亲自做这个
>>> tot = []
>>> for i in [(1,2), (3,4), (5,6)]:
... tot.extend(list(i))
但我想看到的东西票友。
最有效的方式做到这一点是这样的:
tuples = [(1,2), (3,4), (5,6)]
[item for t in tuples for item in t]
输出
[1, 2, 3, 4, 5, 6]
这里是the comparison我做了各种办法做到这一点的重复问题。
我知道有人会提出这样的解决方案
sum(tuples,())
但不要使用它,它会为每一个步骤一个新的中间结果列表!除非你不关心性能,只想要一个紧凑的解决方案。 有关更多详细信息,请参阅Alex's answer
总结:对于小列表,总和会更快,但性能会随着列表的增大而显着降低。
肯定很优雅。 – 2009-12-10 13:02:07
l = [(1,2), (3,4), (5,6)]
reduce (lambda x,y: x+list(y), l, [])
如果一直这样下去,'和()'是简单(但这种方式创造了很多中介名单)。 – tonfa 2009-12-10 12:51:38
>>> import itertools
>>> tp = [(1,2),(3,4),(5,6)]
>>> lst = list(itertools.chain(*tp))
>>> lst
[1, 2, 3, 4, 5, 6]
当然,如果你不需要一个清单,但一个迭代器,你可以删除list()
转换调用。
你展示了如何链三元组,不包含三元组 – SilentGhost 2009-12-10 12:55:49
或单列表:LST =名单(chain.from_iterable(TP)) – 2009-12-10 12:56:53
我已经编辑它,但它不只是三元组,但一个“元组三元组“ - 现在更改为元组列表... – 2009-12-10 12:57:31
哎哟tot.append(I) - 扩展BYT一个列表项,伤害了:-) – Kugel 2009-12-10 12:55:10
你是一个列表的形式获得的元组延长我的眼睛。我正在迭代元组列表。 – 2009-12-10 13:00:51
呃...等一下。 – 2009-12-10 13:08:30