fork download
  1. # numbered - это генератор
  2. def numbered(it, n):
  3. '''it - итератор, n - число объектов, которое нужно вернуть за раз'''
  4. flag = True # ага, опять уебанские флаги для выхода из циклов
  5. while flag:
  6. out = []
  7. for _ in range(n):
  8. try:
  9. out.append(next(it))
  10. except StopIteration:
  11. if out:
  12. yield out
  13. flag = False
  14. break
  15. else: # если не было break в цикле, то yield-им out
  16. yield out
  17.  
  18.  
  19. ##ошибка? TypeError: 'range' object is not an iterator
  20. #for x in numbered(range(10), 3):
  21. # print(x)
  22.  
  23.  
  24. # нужен вызов iter:
  25. for x in numbered(iter(range(10)), 3):
  26. print(x)
  27.  
Success #stdin #stdout 0.02s 9056KB
stdin
Standard input is empty
stdout
[0, 1, 2]
[3, 4, 5]
[6, 7, 8]
[9]