itertools cycle() docs question
Terry Reedy
tjreedy at udel.edu
Thu Aug 22 01:58:38 EDT 2019
On 8/21/2019 2:27 PM, 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
Try this experiment:
from itertools import cycle
def cycle2(iterable):
while iterable:
for thing in iterable:
yield thing
for i, v in zip(range(20), cycle(i*i for i in range(4))):
print(i, v)
for i, v in zip(range(20), cycle2(i*i for i in range(4))):
print(i, v)
--
Terry Jan Reedy
More information about the Python-list
mailing list