iterate over list while changing it

Daniel Stutzbach daniel at stutzbachenterprises.com
Wed Sep 30 23:19:02 EDT 2009


On Thu, Sep 24, 2009 at 3:32 PM, Torsten Mohr <tmohr at s.netic.de> wrote:

> 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.
>

I assume that by "a.push" you meant "a.append".

I believe this will do what you want:

a = [1, 2, 3, 4, 5, 6]
i = 0
while i < len(a):
   x = a[i]
   if x == 3:
       a.pop(i)
       i += 1
       continue

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

   print "i", i, "x", x
   i += 1

--
Daniel Stutzbach, Ph.D.
President, Stutzbach Enterprises, LLC <http://stutzbachenterprises.com>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/python-list/attachments/20090930/0688d0a8/attachment-0001.html>


More information about the Python-list mailing list