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
--
https://mail.python.org/mailman/listinfo/python-list