From: Miss Islington (bot) <31488909+miss-islington@users.noreply.github.com> Date: Tue, 21 Nov 2017 08:29:34 +0000 (-0800) Subject: Add comment and improve variable name in roundrobin() (GH-4486) (#4487) X-Git-Tag: v3.6.4rc1~54 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=32b003aca3e9d670367bd62cbf355ee61fa6b308;p=python Add comment and improve variable name in roundrobin() (GH-4486) (#4487) (cherry picked from commit 337cbbace0a43f50fcd33ea4d3b7cb30733237db) --- diff --git a/Doc/library/itertools.rst b/Doc/library/itertools.rst index 86a590bb67..594af39f60 100644 --- a/Doc/library/itertools.rst +++ b/Doc/library/itertools.rst @@ -753,15 +753,16 @@ which incur interpreter overhead. def roundrobin(*iterables): "roundrobin('ABC', 'D', 'EF') --> A D E B F C" # Recipe credited to George Sakkis - pending = len(iterables) + num_active = len(iterables) nexts = cycle(iter(it).__next__ for it in iterables) - while pending: + while num_active: try: for next in nexts: yield next() except StopIteration: - pending -= 1 - nexts = cycle(islice(nexts, pending)) + # Remove the iterator we just exhausted from the cycle. + num_active -= 1 + nexts = cycle(islice(nexts, num_active)) def partition(pred, iterable): 'Use a predicate to partition entries into false entries and true entries'