deleting elements from a list in a for loop

flupke flupke at
Fri Oct 29 16:18:25 CEST 2004


i'm having trouble with deleting elements from a list in a for loop

============== test program ==============
el = [ "one", "two", "three", "four" ]
print "**** Start ****"
print "List = %s " % el
index = 0
for line in el:
     print "    el = %s " % line
     if ( index == 1 ):
         print "    deleting %s " % line
         del el[index]
         index += 1
print "**** After delete ****"
print "List = %s " % el

print "**** After adding two ****"
print "List = %s " % el
============== test program ==============

This is the output that i get
**** Start ****
List = ['one', 'two', 'three', 'four']
     el = one
     el = two
     deleting two
     el = four
     deleting four
**** After delete ****
List = ['one', 'four']
**** After adding two ****
List = ['one', 'four', 'two']

After deleting it doesn't go to element "three". Why is that?
How can i safely delete from a list?
The reason is that i'm currently making an application to manage my 
links. I write a couple of links to the screen in a listbox (wxPython) 
and thus i delete those links that appear on screen from the list 
because people will be able to edit them.
Then when they move to another link section, i write the content of the 
listbox back to the list. But as i've illustrated in the small example 
my coding is flawed.


More information about the Python-list mailing list