cyclic iterators ?

MRAB google at mrabarnett.plus.com
Sat Mar 3 18:04:32 EST 2007


On Mar 3, 1:27 am, Paul Rubin <http://phr...@NOSPAM.invalid> wrote:
> "Tool69" <kibleur.christo... at gmail.com> writes:
> > I've tried something like this to have a cyclic iterator without
> > sucess:
>
> > def iterate_mylist(my_list):
> >     k = len((my_list)
> >     i=0
> >     while i <= k :
> >         yield my_list[i]
> >         i += 1
> >     i = 0
> >     yield my_list[0]
>
> > I missed something, but I don't know what exactly.
>
> As Bruno says, you can use itertools.cycle, but the problem above is
> that you're not looping repeatedly through the list; you yield all the
> elements, then yield the first element again, then stop.  So for
> ['a','b','c']  you'd yield the sequence a,b,c,a.
>
> I'd rewrite the above something like:
>
>   def iterate_mylist(my_list):
>      while True:
>        for m in my_list:
>           yield m
>
> This just loops through the list over and over again.
>
Another problem is that it should be i < k, not i <= k.




More information about the Python-list mailing list