osdir.com


[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

itertools cycle() docs question


On 8/21/19 11:27 AM, Tobiah wrote:
> In the docs for itertools.cycle() there is
> a bit of equivalent code given:
> 
>  ??? def cycle(iterable):
>  ??????? # cycle('ABCD') --> A B C D A B C D A B C D ...
>  ??????? saved = []
>  ??????? for element in iterable:
>  ??????????? yield element
>  ??????????? saved.append(element)
>  ??????? while saved:
>  ??????????? for element in saved:
>  ??????????????? yield element
> 
> 
> Is that really how it works?? Why make
> the copy of the elements?? This seems
> to be equivalent:
> 
> 
>  ??? def cycle(iterable):
>  ??????? while iterable:
>  ??????????? for thing in iterable:
>  ??????????????? yield thing

You assume that the initial iterable is reusable.  If its not, the only way you 
can go back to the beginning is to have kept track of it yourself.

-- 
Rob Gaddi, Highland Technology -- www.highlandtechnology.com
Email address domain is currently out of order.  See above to fix.