0

可能重复:
如何在 Python 中将列表拆分为大小均匀的块?

如果您有一个iter带有 values的迭代器i0, i1, i2, ...,那么获取其值的迭代器的最 Pythonic 方法是什么

[i0, i1, i2], [i3, i4, i5], ...

以上将是一个假设的输出groupby(iter, 3)

4

2 回答 2

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)
于 2012-08-22T14:42:35.740 回答
0

我能找到的最佳解决方案(需要itertools):

groupby = lambda s,n : izip(*[iter(s)]*n)

但感觉有点hacky,很难阅读

于 2012-08-22T14:37:20.320 回答