Уведомления

Группа в Telegram: @pythonsu

#1 Сен. 8, 2015 12:02:00

Imarden
Зарегистрирован: 2015-02-20
Сообщения: 44
Репутация: +  0  -
Профиль   Отправить e-mail  

продолжаем с места, на котором мы вышли из предыдущего цикла

Читаю: http://habrahabr.ru/post/84330/

Непонятный пример:
Итераторы полезны, когда вы хотите сохранить позицию в цикле между двумя запусками:

itrL = iter(L)
for item in itrL:
  do_something(item)
  if is_some_condition(item):
    break
for item in itrL:  # продолжаем с места, на котором мы вышли из предыдущего цикла
  do_something_else(item)

Попробовал реализовать пример:
itrL = range(3)
for item in itrL:
  print(item, '1')
  if item==2:
    break
for item in itrL:
  print(item, '2')

Но он не работает как написано:
(0, ‘1’)
(1, ‘1’)
(2, ‘1’)
(0, ‘2’)
(1, ‘2’)
(2, ‘2’)
Может имелось ввиду другое?

Отредактировано Imarden (Сен. 8, 2015 12:02:16)

Офлайн

#2 Сен. 8, 2015 12:20:07

Shaman
Зарегистрирован: 2013-03-15
Сообщения: 1369
Репутация: +  88  -
Профиль   Отправить e-mail  

продолжаем с места, на котором мы вышли из предыдущего цикла

iter(range(5))
?

Офлайн

#3 Сен. 8, 2015 12:23:58

Imarden
Зарегистрирован: 2015-02-20
Сообщения: 44
Репутация: +  0  -
Профиль   Отправить e-mail  

продолжаем с места, на котором мы вышли из предыдущего цикла

Работает

itrL = iter(range(10))
for item in itrL:
  print(item, '1')
  if item==5:
    break
for item in itrL:
  print(item, '2')

(0, ‘1’)
(1, ‘1’)
(2, ‘1’)
(3, ‘1’)
(4, ‘1’)
(5, ‘1’)
(6, ‘2’)
(7, ‘2’)
(8, ‘2’)
(9, ‘2’)

Спасибо

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version