Python 展开元组列表

Python 展开元组列表,python,Python,可能重复: 我有这样一个列表,其中元组的长度总是相等的: [(1, 2), (4, 7), (6, 0)] 产生这种效果的最具Python风格的方式是什么 [1, 2, 4, 7, 6, 0] 您可以使用: 或 如果您没有使用Python 3 reduce(lambda x,y: x+y, sequence) 同样有效。由于reduce()已被删除,里程数可能因pythonic的不同而有所不同,但替代解决方案总是不错的 my_list = [(1, 2), (4, 7), (6, 0)]

可能重复:

我有这样一个列表,其中元组的长度总是相等的:

[(1, 2), (4, 7), (6, 0)]
产生这种效果的最具Python风格的方式是什么

[1, 2, 4, 7, 6, 0]
您可以使用:


如果您没有使用Python 3

reduce(lambda x,y: x+y, sequence)
同样有效。由于reduce()已被删除,里程数可能因pythonic的不同而有所不同,但替代解决方案总是不错的

my_list = [(1, 2), (4, 7), (6, 0)]
print sum(my_list,())
结果

(1, 2, 4, 7, 6, 0)

事实上,我的“元组”是从对象生成的。有没有更好的方法来编写
[x for o in myObjects for x in(o.a,o.b)]
。你必须自己选择你最喜欢的。那我就没办法避免构造元组了吗?@Eric:当然可以。您可以向对象类中添加一个
\uuuu iter\uuu()
,实现为
yield self.a;收益率self.b
。或者您可以使用
final_list=[];对于my_对象中的o:final_list.append(o.a);最终列表。附加(o.b)
。有无数的选择,你选择哪一个真的不重要。我没有想到
\uuuuu iter\uuuu
。我会坚持用元组。谢谢或者,你知道,
sum(sequence)
这有O(n^2)复杂度(这只是一种写
sum(sequence,())
的神秘方式,它也有二次复杂度)。注意,在Python 3中,“代码>还原())不存在,它只是移动到函数> /COD>。如何能有10K+RP的人问这个问题,它已经被回答了101次?@ WIM,因为他的用户页面上有:“语言:java java语言C++ +HTMLCSCS+PHPJavaScript”。->不是python这有二次运行时,应该避免。@Sven Marnach OK。事实上,我对O(1)、O(2)等考虑因素的了解很少。你怎么知道它是二次的呢?在每一步中,到目前为止创建的整个元组都需要复制到一个新的元组中,其中包含两个附加项。如果您使用一个长列表来执行此操作,那么在操作即将结束时,每次添加两项都会非常昂贵。你也可以通过测量所需的时间来了解这一点@Sven Marnach I认为C中的一个底层进程可以像迭代器一样读取元组中的值,并且只有当所有元组元素都被累积时,才能创建最终元组,而不会生成越来越长的中间元组。非常感谢。
my_list = [(1, 2), (4, 7), (6, 0)]
print sum(my_list,())
(1, 2, 4, 7, 6, 0)