diff options
author | Raymond Hettinger <python@rcn.com> | 2008-02-26 23:40:50 (GMT) |
---|---|---|
committer | Raymond Hettinger <python@rcn.com> | 2008-02-26 23:40:50 (GMT) |
commit | 93e804da9cb2e36801e153d2b9c9f8332c70784f (patch) | |
tree | 660987165ed0e07ae6658b20effbc3a67098e3f6 /Doc/library | |
parent | 3ef2063ec80da1f8ea5ee214caa3f5265d791448 (diff) | |
download | cpython-93e804da9cb2e36801e153d2b9c9f8332c70784f.zip cpython-93e804da9cb2e36801e153d2b9c9f8332c70784f.tar.gz cpython-93e804da9cb2e36801e153d2b9c9f8332c70784f.tar.bz2 |
Add itertools.combinations().
Diffstat (limited to 'Doc/library')
-rw-r--r-- | Doc/library/itertools.rst | 30 |
1 files changed, 15 insertions, 15 deletions
diff --git a/Doc/library/itertools.rst b/Doc/library/itertools.rst index c8f6e33..6dc19a1 100644 --- a/Doc/library/itertools.rst +++ b/Doc/library/itertools.rst @@ -97,21 +97,21 @@ loops that truncate the stream. def combinations(iterable, r): pool = tuple(iterable) - if pool: - n = len(pool) - vec = range(r) - yield tuple(pool[i] for i in vec) - while 1: - for i in reversed(range(r)): - if vec[i] == i + n-r: - continue - vec[i] += 1 - for j in range(i+1, r): - vec[j] = vec[j-1] + 1 - yield tuple(pool[i] for i in vec) - break - else: - return + n = len(pool) + assert 0 <= r <= n + vec = range(r) + yield tuple(pool[i] for i in vec) + while 1: + for i in reversed(range(r)): + if vec[i] == i + n-r: + continue + vec[i] += 1 + for j in range(i+1, r): + vec[j] = vec[j-1] + 1 + yield tuple(pool[i] for i in vec) + break + else: + return .. versionadded:: 2.6 |