如果您有一个iter
带有 values的迭代器i0, i1, i2, ...
,那么获取其值的迭代器的最 Pythonic 方法是什么
[i0, i1, i2], [i3, i4, i5], ...
以上将是一个假设的输出groupby(iter, 3)
。
如果您有一个iter
带有 values的迭代器i0, i1, i2, ...
,那么获取其值的迭代器的最 Pythonic 方法是什么
[i0, i1, i2], [i3, i4, i5], ...
以上将是一个假设的输出groupby(iter, 3)
。
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)
我能找到的最佳解决方案(需要itertools
):
groupby = lambda s,n : izip(*[iter(s)]*n)
但感觉有点hacky,很难阅读