[Tutor] trouble with list.remove() loop
steve at pearwood.info
Tue Sep 28 13:22:36 CEST 2010
On Tue, 28 Sep 2010 06:55:15 pm Christian Witts wrote:
> You are mutating the list that you are iterating over so in essence
> you are looking at the word in list index 0, testing it, and removing
> it, then moving onto list index 1 but now your list has 'amazing' in
> index 0 so that does not get checked.
> The simplest way is to iterate through a new list with this
> for word in candidates[:]:
> That will create a new list that you will iterate over while you
> mutate the original list.
Another technique is to iterate over the list backwards, so you are only
ever deleting words you've already seen:
for i in range(len(candidates)-1, -1, -1)):
word = candidates[i]
I know the series of -1, -1, -1 is ugly, but that's what it takes.
More information about the Tutor