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中,“代码>还原())不存在,它只是移动到my_list = [(1, 2), (4, 7), (6, 0)]
print sum(my_list,())
(1, 2, 4, 7, 6, 0)