Browse Source
Add comment and improve variable name in roundrobin() (#4486)
pull/4420/merge
Raymond Hettinger
8 years ago
committed by
GitHub
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with
5 additions and
4 deletions
-
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' |
|
|
|
|