Pergunta

Say Eu tenho o seguinte loop:

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

Será que a condição len(i) sendo avaliada no loop while ser atualizados quando algo é anexado ao l?

Foi útil?

Solução

Sim, vai.

Outras dicas

Seu código irá funcionar, mas usando um contador de loop muitas vezes não é considerado muito "pythônico". Usando for funciona tão bem e elimina o contador:

>>> 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

Se você precisa saber como "longe" na lista que você é, você pode usar 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
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top