Modifying a list while iterating over it - why not?

list, python

Solution

while len(mylist) > 0:
    print mylist.pop()

You are not iterating over the list. You are each time checking an atomic condition.

Also:

while len(mylist) > 0:

can be rewritten as:

while len(mylist):

which can be rewritten as:

while mylist:

Problem

Almost every tutorial and SO answer on this topic insists that you should never modify a list while iterating over it, but I can't see why this is such a bad thing if the code is valid. For example: ``` while len(mylist) > 0: print mylist.pop() ``` Am I missing something?

Original source

Related problems