How to del item of a list in loop?

skull skullw at sina.com.cn
Sat Jan 15 15:27:08 EST 2005


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.

- skull



More information about the Python-list mailing list