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 链接的问题中找到。
有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]
您可以使用减少:
>>> import operator
>>> reduce(operator.add, [(3,4),(1,2)])
(3, 4, 1, 2)