On 11/10/12 08:49, eryksun wrote:

Also, generally avoid mutating a list while iterating over it.
listiterator is just incrementing an index, so modifying the size of
the list can produce nonsense (e.g. if you remove the current item,
the next item will be skipped). Instead, create an empty list and
append() to it.


If you absolutely have to modify the list you are iterating over,
iterate over it backwards:


# this doesn't work correctly
for i in range(len(mylist)):
    x = mylist[i]
    if x < 0:
        del mylist[i]


# this does
for i in range(len(mylist)-1, -1, -1):
    x = mylist[i]
    if x < 0:
        del mylist[i]


But really, don't do that either. Iterate over a copy, or make
a new list with the items you want. It's faster and easier.



--
Steven
_______________________________________________
Tutor maillist  -  Tutor@python.org
To unsubscribe or change subscription options:
http://mail.python.org/mailman/listinfo/tutor

Reply via email to