Shitiz Bansal wrote:
I could not understand what you exactly mean.

In order to explain wat my problem is, here is an
example code. Its not exactly what I am doing, I am
using multiple threads and a rather complicated code
so  try and understand the sense rather than the code
itself.


myls=range(50)
for i in myls:

print i if i==20: myls.insert(5,5)

The point is, the list(both size and elements) is
changing even as it is being operated upon.

What Jacob is saying is, one common way to deal with this is to make a copy of the list and iterate over that while changing the original list. Your sample would look like this:


myls=range(50)
for i in myls[:]:  # <-- Note: makes a copy of myls
        print i
        if i==20:
                myls.insert(5,5)

Kent


This particular case goes into infinite loop at i=20.

Interestingly, I can freely edit the list yet to be
traversed, without any ill effects, which would not
have been possible if a python list was a pure
array(due to immutable length of an array in c).

Shitiz

--- "Jacob S." <[EMAIL PROTECTED]> wrote:


I'm taking a shot in the dark and answering here.

Have you tried making a copy of the list, iterating
over the copy, and changing the original based on the copy?


Jacob

_______________________________________________ Tutor maillist - [email protected] http://mail.python.org/mailman/listinfo/tutor

Reply via email to