On Wed, Jan 19, 2022 at 10:49 AM jerome via code-quality <
[email protected]> 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)
cycle(generate_random())
```
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 -- [email protected]
> To unsubscribe send an email to [email protected]
> https://mail.python.org/mailman3/lists/code-quality.python.org/
> Member address: [email protected]
>
_______________________________________________
code-quality mailing list -- [email protected]
To unsubscribe send an email to [email protected]
https://mail.python.org/mailman3/lists/code-quality.python.org/
Member address: [email protected]