itertools cycle() docs question

Tobiah toby at tobiah.org
Wed Aug 21 15:52:44 EDT 2019


On 8/21/19 11:38 AM, Rob Gaddi wrote:
> 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.
> 

I see.  What is an example of an iterable that is not reusable?



More information about the Python-list mailing list