Уведомления

Группа в Telegram: @pythonsu

#1 Ноя. 21, 2006 11:18:57

jan2ary
От:
Зарегистрирован: 2006-11-21
Сообщения: 49
Репутация: +  0  -
Профиль   Отправить e-mail  

Удаление из списка в цикле

Есть код:
>>> lst=range(1,10)
>>> lst

>>> for i in lst:
lst.remove(i)
Каково будет значение lst после его выполнения? А теперь попробуйте…
У кого предположение совпало с опытом?

Для меня такое поведение не было интуитивно понятным. Интересно, сколько еще новичков на этом голову посушили? :)



Отредактировано (Ноя. 21, 2006 12:14:59)

Офлайн

#2 Ноя. 21, 2006 12:39:45

slivlen
От:
Зарегистрирован: 2006-07-06
Сообщения: 764
Репутация: +  0  -
Профиль   Отправить e-mail  

Удаление из списка в цикле

jan2ary
Каково будет значение lst после его выполнения? А теперь попробуйте…
У кого предположение совпало с опытом?
У меня совпало. Изменять список по которому проходишь в цикле - плохая идея, котороя приходит в голову только, разве что, новичкам(Вообще надо внимательней читать доки. Там есть явное предостережение от ипользования таких конструкций). Если надо изменять этот список, то надо предварительно создать его копию, и в цикле менять именно ее.

Python 2.4.2 (#1, Feb 12 2006, 03:59:46)
on linux2
Type “help”, “copyright”, “credits” or “license” for more information.
>>> import copy
>>> l=range(0,10)
>>> l

>>> lc=copy.copy(l)
>>> for i in l:
… lc.remove(i)

>>> lc

>>>


http://www.python.org/doc/2.4/ref/for.html



Офлайн

#3 Ноя. 21, 2006 12:53:17

jan2ary
От:
Зарегистрирован: 2006-11-21
Сообщения: 49
Репутация: +  0  -
Профиль   Отправить e-mail  

Удаление из списка в цикле

Да вот к этому решению я в конце концов и пришел.
За ссылку спасибо, я искал заметку об этом в разделе о списках…



Офлайн

#4 Ноя. 21, 2006 14:16:05

slav0nic
Команда
От: dp.ua
Зарегистрирован: 2006-05-07
Сообщения: 2250
Репутация: +  40  -
Профиль   Отправить e-mail  

Удаление из списка в цикле


>>> lst=range(1,10)
>>> for i in lst:
… print i
… lst.remove(i)
… print lst

1

3

5

7

9

>>>

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version