使用zip(*[iter(s)]*n)
成语巧妙地将列表分成相等的块。是否有一种很好的解除它的方法?
例如,如果我有以下代码:
>>> s = [3,4,1,2]
>>> zip(*[iter(s)]*2)
[(3, 4), (1, 2)]
是否有一些函数func([(3,4),(1,2)]
会产生[3,4,1,2]
作为输出?
编辑:
时间和更多解决方案可以在下面的Dominic Kexel链接的问题中找到。
答案 0 :(得分:3)
有itertools.chain.from_iterable
>>> import itertools
>>> s = [(3, 4), (1, 2)]
>>> list(itertools.chain.from_iterable(s))
[3, 4, 1, 2]
但是你也可以使用嵌套列表理解。
>>> s = [(3, 4), (1, 2)]
>>> [i for sub in s for i in sub]
[3, 4, 1, 2]
答案 1 :(得分:0)
您可以使用reduce:
>>> import operator
>>> reduce(operator.add, [(3,4),(1,2)])
(3, 4, 1, 2)