Оценка состояния цикла в Python - PullRequest
2 голосов
/ 14 мая 2009

Скажите, у меня есть следующий цикл:

i = 0
l = [0, 1, 2, 3]
while i < len(l):
    if something_happens:
         l.append(something)
    i += 1

Будет ли обновляться условие len(i), вычисляемое в цикле while, когда что-то добавляется к l?

Ответы [ 2 ]

14 голосов
/ 14 мая 2009

Да, будет.

3 голосов
/ 14 мая 2009

Ваш код будет работать, но использование счетчика циклов часто не считается "питонным". Использование for работает так же хорошо и устраняет счетчик:

>>> foo = [0, 1, 2]
>>> for bar in foo:
    if bar % 2: # append to foo for every odd number
        foo.append(len(foo))
    print bar

0
1
2
3
4

Если вам необходимо узнать, как далеко вы находитесь в списке, вы можете использовать enumerate:

>>> foo = ["wibble", "wobble", "wubble"]
>>> for i, bar in enumerate(foo):
    if i % 2: # append to foo for every odd number
        foo.append("appended")
    print bar

wibble
wobble
wubble
appended
appended
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...