Вот решение, которое дает серию итераторов, каждый из которых выполняет итерацию по n элементам.
def groupiter(thing, n):
def countiter(nextthing, thingiter, n):
yield nextthing
for _ in range(n - 1):
yield next(thingiter)
thingiter = iter(thing)
while True:
try:
nextthing = next(thingiter)
except StopIteration:
return None
yield countiter(nextthing, thingiter, n)
Я использую его следующим образом:
table = list(range(250))
for group in groupiter(table, 16):
print(', '.join('0x{:02X}'.format(x) for x in group))
Обратите внимание, что он может обрабатывать длину объекта, не кратную n .