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] if some_test(): del candidates[i] I know the series of -1, -1, -1 is ugly, but that's what it takes. -- Steven D'Aprano _______________________________________________ Tutor maillist - Tutor@python.org To unsubscribe or change subscription options: http://mail.python.org/mailman/listinfo/tutor