itertools cycle() docs question

Dan Sommers 2QdxY4RzWzUUiLuE at potatochowder.com
Wed Aug 21 14:42:38 EDT 2019


On 8/21/19 2:32 PM, Calvin Spealman wrote:
> The point is to demonstrate the effect, not the specific implementation.

Once you've gone through the iterable once, it's falsey,
which means that the while loop will end.  But if you copy
all the elements to a real list, then the while loop is
infinite.

Dan

> On Wed, Aug 21, 2019 at 2:30 PM Tobiah <toby at tobiah.org> 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
>> --
>> https://mail.python.org/mailman/listinfo/python-list
>>
> 
> 




More information about the Python-list mailing list