# numbered - это генератор
def numbered(it, n):
'''it - итератор, n - число объектов, которое нужно вернуть за раз'''
flag = True # ага, опять уебанские флаги для выхода из циклов
while flag:
out = []
for _ in range(n):
try:
out.append(next(it))
except StopIteration:
if out:
yield out
flag = False
break
else: # если не было break в цикле, то yield-им out
yield out
##ошибка? TypeError: 'range' object is not an iterator
#for x in numbered(range(10), 3):
# print(x)
# нужен вызов iter:
for x in numbered(iter(range(10)), 3):
print(x)
IyBudW1iZXJlZCAtINGN0YLQviDQs9C10L3QtdGA0LDRgtC+0YAKZGVmIG51bWJlcmVkKGl0LCBuKToKICAgICcnJ2l0IC0g0LjRgtC10YDQsNGC0L7RgCwgbiAtINGH0LjRgdC70L4g0L7QsdGK0LXQutGC0L7Qsiwg0LrQvtGC0L7RgNC+0LUg0L3Rg9C20L3QviDQstC10YDQvdGD0YLRjCDQt9CwINGA0LDQtycnJwogICAgZmxhZyA9IFRydWUgICMg0LDQs9CwLCDQvtC/0Y/RgtGMINGD0LXQsdCw0L3RgdC60LjQtSDRhNC70LDQs9C4INC00LvRjyDQstGL0YXQvtC00LAg0LjQtyDRhtC40LrQu9C+0LIKICAgIHdoaWxlIGZsYWc6CiAgICAgICAgb3V0ID0gW10KICAgICAgICBmb3IgXyBpbiByYW5nZShuKToKICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgb3V0LmFwcGVuZChuZXh0KGl0KSkKICAgICAgICAgICAgZXhjZXB0IFN0b3BJdGVyYXRpb246CiAgICAgICAgICAgICAgICBpZiBvdXQ6CiAgICAgICAgICAgICAgICAgICAgeWllbGQgb3V0CiAgICAgICAgICAgICAgICBmbGFnID0gRmFsc2UKICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgZWxzZTogICMg0LXRgdC70Lgg0L3QtSDQsdGL0LvQviBicmVhayDQsiDRhtC40LrQu9C1LCDRgtC+IHlpZWxkLdC40Lwgb3V0CiAgICAgICAgICAgIHlpZWxkIG91dAoKCiMj0L7RiNC40LHQutCwPyBUeXBlRXJyb3I6ICdyYW5nZScgb2JqZWN0IGlzIG5vdCBhbiBpdGVyYXRvcgojZm9yIHggaW4gbnVtYmVyZWQocmFuZ2UoMTApLCAzKToKIyAgICBwcmludCh4KQoKCiMg0L3Rg9C20LXQvSDQstGL0LfQvtCyIGl0ZXI6CmZvciB4IGluIG51bWJlcmVkKGl0ZXIocmFuZ2UoMTApKSwgMyk6CiAgICBwcmludCh4KQo=