On May 16, 4:21 pm, Lisa <[EMAIL PROTECTED]> wrote: > I am reading in data from a text file. I want to enter each value on > the line into a list and retain the order of the elements. The number > of elements and spacing between them varies, but a typical line looks > like: > > ' SRCPARAM 1 6.35e-07 15.00 340.00 1.10 3.0 ' > > Why does the following not work: > > line = ' SRCPARAM 1 6.35e-07 15.00 340.00 1.10 3.0 ' > li = line.split(' ') > for j,i in enumerate(li): > if i == '': > li.remove(i) > [snip] What you're forgetting is that when you remove an item from a list all the following items move down.
If you try this: li = list('abc') for i, j in enumerate(li): print ", ".join("li[%d] is '%s'" % (p, q) for p, q in enumerate(li)) print "Testing li[%d], which is '%s'" % (i, j) if j == 'a': print "Removing '%s' from li" % j li.remove(j) then you'll get: li[0] is 'a', li[1] is 'b', li[2] is 'c' Testing li[0], which is 'a' Removing 'a' from li li[0] is 'b', li[1] is 'c' Testing li[1], which is 'c' You can see that when 'enumerate' yielded li[0] 'b' was in li[1] and when it yielded li[1] 'b' was in li[1]; it never saw 'b' because 'b' moved! Oops! Been there, done that... :-) -- http://mail.python.org/mailman/listinfo/python-list