On 05/09/06, Tim Williams <[EMAIL PROTECTED]> wrote: > On 05/09/06, Gregory Piñero <[EMAIL PROTECTED]> wrote:> I'm going > to assume that it's supposed to work like this, but could > > someone tell me the reasoning behind it? I.E. why is 3 skipped? > > > > >>> alist=[1,2,3] > > >>> for item in alist: > > .... print item > > .... if item==2: > > .... alist.remove(item) > > .... > > 1 > > 2 > > >>> > > > > > > Bonus Question: > > Can we make this behave more intuitiviely in Python 3000? > > It does already, you just haven't grasped list fully yet :):) > > when you remove 2 from alist, the list becomes length 2, there is no > longer a 3rd item in the list to iterate over. > > Try this > > > >>> alist=[1 ,2 ,3, 4] > > >>> for item in alist: > > .... print item > > .... if item==2: > > .... alist.remove(item) > > .... print alist >
sorry, I meant to offer an alternative also in yourgiven case you can iterate over a copy of the list like this: >>> for item in alist[:] : -- http://mail.python.org/mailman/listinfo/python-list