how to remove multiple occurrences of a string within a list?

7stud bbxx789_05ss at yahoo.com
Wed Apr 4 13:05:00 EDT 2007


On Apr 4, 3:08 am, Steven D'Aprano <s... at REMOVEME.cybersource.com.au>
wrote:
> On Wed, 04 Apr 2007 00:59:23 -0700, 7stud wrote:
> > On Apr 3, 3:53 pm, "bahoo" <b83503... at yahoo.com> wrote:
> >> > target = "0024"
> >> > l = ["0024", "haha", "0024"]
>
> >> > for index, val in enumerate(l):
> >> >     if val==target:
> >> >         del l[index]
>
> >> > print l
>
> >> This latter suggestion (with the for loop) seems to be buggy: if there
> >> are multiple items in the list "l" equal to "target", then only the
> >> first one will be removed!
>
> >> Thanks anyways.
>
> > Prove it.
>
> Try replacing l = ["0024", "haha", "0024"]
> with
>
> l = ["0024", "0024", "haha"]
>
> and re-running the code.
>
> Actually, the description of the bug isn't quite right. The behaviour of
> the for loop isn't defined -- sometimes it will work, sometimes it won't,
> depending on how many items there are, and which of them are equal to the
> target.
>

Thank you for the explanation.




More information about the Python-list mailing list