On Thu, 24 Sep 2009 21:32:53 +0100, Torsten Mohr <tm...@s.netic.de> wrote:

Hello,

a = [1, 2, 3, 4, 5, 6]

for i, x in enumerate(a):
    if x == 3:
        a.pop(i)
        continue

    if x == 4:
        a.push(88)

    print "i", i, "x", x

I'd like to iterate over a list and change that list while iterating.
I'd still like to work on all items in that list, which is not happening
in the example above.
The conditions in the example are not real but much more complex
in reality.

Can anybody tell me how to do this?

Generally, don't.  It's much less dangerous to create a new list as you
go.

new_a = []
for x in a:
  if x != 3:
    new_a.append(x)
  if x == 4:
    new_a.append(88)
    # or whatever you intended "push" to mean

If you weren't doing the insertion, you could have used a list
comprehension and neatened things up a bit.

--
Rhodri James *-* Wildebeest Herder to the Masses
--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to