If you use a generator instead of a string then you'll only loop once and wait forever.

On Wed, Jan 19, 2022 at 11:49 AM jerome via code-quality <code-quality@python.org> 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:
```
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
```
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 -- code-quality@python.org
To unsubscribe send an email to code-quality-leave@python.org
https://mail.python.org/mailman3/lists/code-quality.python.org/
Member address: dstanek@dstanek.com


--
david stanek
web: https://dstanek.com
twitter: https://twitter.com/dstanek
linkedin: https://www.linkedin.com/in/dstanek/