Changing the value of a for loop index on the fly

Mitja nun at example.com
Wed Mar 23 23:08:06 CET 2005


On Wed, 23 Mar 2005 23:27:54 +0100, Gabriel F. Alcober <gfa1977 at yahoo.ca>  
wrote:

> Hi! There goes a newbie trouble:
>
> for i in range(0, len(subject)):
>         if subject[i] in preps:
>             psubject.append(noun_syn_parser(subject[0:i]))
>             subject[0:i] = []
>
> Since the last line eliminates some elements of the list, I'm wondering  
> if it's somehow possible to change the value of "i" to 0 in order not to  
> get an index error. Any other ideas?

Messing with the list/index concerned within the loop itself is rarely a  
good idea and can most often be avoided:

lastFound = 0
for i in range(0, len(subject)):
   if subject[i] in preps:
     psubject.append(noun_syn_parser(subject[lastFound:i]))
     lastFound = i   #you probably want i+1 here? your source says i,  
however

#if having the subject list matters, you can finish it all outside the  
loop with
subject[0:lastFound] = []


HTH
Mitja



More information about the Python-list mailing list