On Wed, Jan 19, 2022 at 10:49 AM jerome via code-quality < email@example.com> wrote:
Hi everyone, first I'm not quite sure if this is the right place to make this kind of suggestion/ask question but, `itertools.cycle` makes a copy of the iterable its given and as the note says: this may require significant auxiliary storage. Maybe I don't see the reason why this is nescessary but, shouldn't this work just as well:
This definitely isn't the right place, but I'll give you something to think about to help answer your question anyway.
def cycle(iterable): # cycle('ABCD') --> A B C D A B C D A B C D ... while iterable: for element in iterable: yield element
Let's say I give you an iterable that looks like:
``` import random import typing
def generate_random(limit: int = 5) -> typing.Generator[int, None, None]: for _ in range(limit): yield random.randint(0, 1_000_000)
How would your your revised version behave? How does that compare to the stdlib version?
Instead of the current:
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
code-quality mailing list -- firstname.lastname@example.org To unsubscribe send an email to email@example.com https://mail.python.org/mailman3/lists/code-quality.python.org/ Member address: firstname.lastname@example.org