Arnaud Delobelle schrieb:
ceciliasei...@gmx.de writes:

As you were talking about list.pop()...

Is anyone able to reproduce the following and explain why this happens
by chance? (Using 3.1.1)

l1 = ["ready", "steady", "go"]
l2 = ["one", "two", "tree"]
l3 = ["lift off"]

for w in l1:

Ouch... thanks Arnaud... The stable way would've been

for w in l1[:]: #use copy of l1 for iteration
        print(l1.pop()) #decomposite list

(just in case any other newbie is reading this...)


   print(l1.pop())  #prints only "go steady" - why not "ready"??


I suggest you simulate the loop above using pen and paper, writing the
value of w and the value of l1 at each iteration.  The behaviour you are
observing should then be clearly explained.  And you should also realise
that it's a really bad idea to mutate a list that you are iterating on!

HTH


--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to