Итерация над изменяемыми объектами являются изменчива во время его исполнения:Могу ли я построить изменяемый диапазон?
a = [11, 12, 13]
for i in a:
if i == 12:
a.append(20)
print(i)
Результаты с
11
12
13
20
И a
является [11, 12, 13, 20]
Но если я использую range
не изменяемые
a = [11, 12, 13]
for i in range(len(a)):
if i == 1:
a.append(20)
print(a[i])
Результаты с
11
12
13
в то время как a
еще [11, 12, 13, 20]
впоследствии.
Есть ли способ построить объект myrange
, который будет работать так же, как и диапазон, но будет изменяться во время выполнения?
У вас нет генератора в этом коде. Вы уверены, что понимаете, что делает ваш фрагмент кода? – user2357112
Будьте осторожны: первый код может вызвать головную боль, если сравнение и добавление имеют одинаковое значение. Вы не получаете предупреждения, но вы не хотите мутировать список, который вы повторяете когда-либо ... –
@ user2357112, я стараюсь не быть уверенным ни в чем :-). Но в этом случае я думаю, что просто неправильно использовал термин «генератор», который я сейчас исправил и устранил из вопроса. – Aguy