On 8/21/19 11:38 AM, Rob Gaddi wrote:
On 8/21/19 11:27 AM, 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

You assume that the initial iterable is reusable.  If its not, the
only way you can go back to the beginning is to have kept track of it
yourself.


I see.  What is an example of an iterable that is not reusable?
--
https://mail.python.org/mailman/listinfo/python-list

Reply via email to