我有这样的,其中的元组一直是相等长度的列表:
[(1, 2), (4, 7), (6, 0)]
有什么大多数pythonic方式来产生这个?
[1, 2, 4, 7, 6, 0]
我有这样的,其中的元组一直是相等长度的列表:
[(1, 2), (4, 7), (6, 0)]
有什么大多数pythonic方式来产生这个?
[1, 2, 4, 7, 6, 0]
可以使用list comprehension:
my_list = [(1, 2), (4, 7), (6, 0)]
result = [x for t in my_list for x in t]
或
result = list(itertools.chain.from_iterable(my_list))
如果你不使用Python 3的时候,
reduce(lambda x,y: x+y, sequence)
也适用。由于reduce()已被删除,所以里程可能会有所不同,但替代解决方案总是很好。
或者,你知道,'sum(sequence)' – Eric
这具有O(n^2)的复杂性(并且只是写出sum(sequence,())'的一种神秘方式,其也具有二次复杂性)。请注意'reduce()'在Python 3中没有消失 - 它只是被移到'functools'。 –
my_list = [(1, 2), (4, 7), (6, 0)]
print sum(my_list,())
结果
(1, 2, 4, 7, 6, 0)
这有二次方运行时间,应该避免。 –
@Sven Marnach行。事实上,我对这些O(1),O(2)等等的考虑很少理解。你怎么知道这是二次方? – eyquem
在每一步中,到目前为止创建的整个元组都需要被复制到一个新的元组中,并添加两个额外的元素。如果你用很长的清单来做这件事,那么在操作结束时,每增加两件物品都相当昂贵。您也可以通过测量所需时间来看到这一点。 [使用长度为运行时间百倍的十倍长度的列表](https://gist.github.com/1472334)。 –
一个人怎么能与10K +推销员问这个问题,已经回答了SO已经101次? – wim
@wim因为他的用户页面上有:_“语言:•Java•C•C++•HTML•CSS•PHP•Javascript”_ - >不是Python – eyquem