可能重复:
How do you split a list into evenly sized chunks in Python?
如果你有一个值为iter
的迭代器i0, i1, i2, ...
,那么得到一个值为
[i0, i1, i2], [i3, i4, i5], ...
以上是假设groupby(iter, 3)
的输出。
答案 0 :(得分:2)
itertools模块有一个名为grouper
的配方。以下是直接从itertools文档中复制的摘录。
def grouper(n, iterable, fillvalue=None):
"Collect data into fixed-length chunks or blocks"
# grouper(3, 'ABCDEFG', 'x') --> ABC DEF Gxx
args = [iter(iterable)] * n
return izip_longest(fillvalue=fillvalue, *args)
答案 1 :(得分:0)
我能找到的最佳解决方案(需要itertools
):
groupby = lambda s,n : izip(*[iter(s)]*n)
但感觉有点hacky并且难以阅读