def chunked(iterable, n):
"""
Split iterable in chunks of size n, where each chunk is also an iterator.
for chunk in chunked(range(10), 3):
for element in chunk:
print element
>>> it = chunked(range(7), 2)
>>> list(map(tuple, it))
[(0, 1), (2, 3), (4, 5), (6,)]
:param iterable iterable: Any iterable, e.g. list, range, ...
:param n: Chunk size
:return: Chunked iterable
:rtype: Iterator over iterators
"""
it = iter(iterable)
while True:
chunk_it = itt.islice(it, n)
try:
first_el = next(chunk_it)
except StopIteration:
return
yield itt.chain((first_el,), chunk_it)
评论列表
文章目录