Raymond Hettinger added the comment: When a cycle object has fully consumed its input iterable, __reduce__ method uses the returns a space-inefficient result when space-efficient alternative is available.
# Current way of restoring a cycle object with excess info in setstate: >>> c = cycle(iter('de')) >>> c.__setstate__((['a', 'b', 'c', 'd', 'e'], 1)) >>> ''.join(next(c) for i in range(20)) # next 20 values 'deabcdeabcdeabcdeabc' # The same result can be achieved with less information: >>> c = cycle(iter('de')) >>> c.__setstate__((['a', 'b', 'c'], 0)) >>> ''.join(next(c) for i in range(20)) # next 20 values 'deabcdeabcdeabcdeabc' ---------- _______________________________________ Python tracker <rep...@bugs.python.org> <http://bugs.python.org/issue24874> _______________________________________ _______________________________________________ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com