On Sat, 15 Jan 2005 15:27:08 -0500, skull <[EMAIL PROTECTED]> wrote: > >Hi everybody, it is my first post in this newsgroup. >I am a newbie for python though I have several years development experience in >c++. >recently, I was stumped when I tried to del item of a list when iteration. > >here is the wrong way I did: > >lst = [1, 2, 3] >for i in lst: > print i > if i == 2: > lst.remove(i) > >the result is: > >1 >2 >>>> > >as you would see, '3' is missing. this problem is caused by 'lst.remove(i)'. >apparently, 'marked-and-sweep' is a solution to deal with this issue. >but I think there SHOULD BE more 'wise' trick. I want to get your help. > >Thanks in advance. > No one seems to have suggested this in-place way yet, so I'll trot it out once again ;-)
>>> lst = [1, 2, 3] >>> i = 0 >>> for item in lst: ... if item !=2: ... lst[i] = item ... i += 1 ... >>> del lst[i:] >>> lst [1, 3] Regards, Bengt Richter -- http://mail.python.org/mailman/listinfo/python-list