Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.python > #20183

Re: Removing items from a list

Date 2012-02-10 20:26 +0000
From MRAB <python@mrabarnett.plus.com>
Subject Re: Removing items from a list
References <7c4cc084-7b55-48f9-a3ac-219f33b69d0b@k10g2000yqk.googlegroups.com>
Newsgroups comp.lang.python
Message-ID <mailman.5676.1328905774.27778.python-list@python.org> (permalink)

Show all headers | View raw


On 10/02/2012 20:04, Thomas Philips wrote:
> In the past, when deleting items from a list, I looped through the
> list in reverse to avoid accidentally deleting items I wanted to keep.
> I tried something different today, and, to my surprise, was able to
> delete items correctly, regardless of the direction in which I looped,
> in both Python 3.2.2. and 2..1 -  does the remove() function somehow
> allow the iteration to continue correctly even when items are removed
> from the midde of the list?
>
>>>>  x = list(range(10))
>>>>  x
> [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>>>  for i in x:
> 	if i % 2 == 0:
> 		x.remove(i)
>
>>>>  x
> [1, 3, 5, 7, 9]
>>>>  for i in reversed(x):
> 	if i % 2 == 0:
> 		x.remove(i)
>
>>>>  x
> [1, 3, 5, 7, 9]
>>>>  x = list(range(10))
>>>>  for i in reversed(x):
> 	if i % 2 == 0:
> 		x.remove(i)
>
>
>>>>  x
> [1, 3, 5, 7, 9]
>
The answer is no. For example:

 >>> for i in x:
	print("i is", i)
	if i % 2 == 0:
		x.remove(i)

		
i is 0
i is 1
i is 2
i is 4
 >>> x
[0, 1, 3, 5]

Back to comp.lang.python | Previous | NextPrevious in thread | Next in thread | Find similar | Unroll thread


Thread

Removing items from a list Thomas Philips <tkpmep@gmail.com> - 2012-02-10 12:04 -0800
  Re: Removing items from a list Ian Kelly <ian.g.kelly@gmail.com> - 2012-02-10 13:22 -0700
    Re: Removing items from a list Thomas Philips <tkpmep@gmail.com> - 2012-02-10 12:48 -0800
  Re: Removing items from a list MRAB <python@mrabarnett.plus.com> - 2012-02-10 20:26 +0000
  Re: Removing items from a list Chris Angelico <rosuav@gmail.com> - 2012-02-11 08:58 +1100
    Re: Removing items from a list Thomas Philips <tkpmep@gmail.com> - 2012-02-13 05:55 -0800

csiph-web