Mailing List Archive

bpo-42450: Minor updates to the itertools recipes (GH-23555)
https://github.com/python/cpython/commit/fc40b3020cf3c869833fd5d3720cf9768fe3bb46
commit: fc40b3020cf3c869833fd5d3720cf9768fe3bb46
branch: master
author: Raymond Hettinger <rhettinger@users.noreply.github.com>
committer: rhettinger <rhettinger@users.noreply.github.com>
date: 2020-11-29T10:47:22-08:00
summary:

bpo-42450: Minor updates to the itertools recipes (GH-23555)

files:
M Doc/library/itertools.rst
M Lib/test/test_itertools.py

diff --git a/Doc/library/itertools.rst b/Doc/library/itertools.rst
index 107bc515a6778..3de66c9349281 100644
--- a/Doc/library/itertools.rst
+++ b/Doc/library/itertools.rst
@@ -755,7 +755,7 @@ which incur interpreter overhead.
"Count how many times the predicate is true"
return sum(map(pred, iterable))

- def padnone(iterable):
+ def pad_none(iterable):
"""Returns the sequence elements and then returns None indefinitely.

Useful for emulating the behavior of the built-in map() function.
@@ -809,7 +809,7 @@ which incur interpreter overhead.
nexts = cycle(islice(nexts, num_active))

def partition(pred, iterable):
- 'Use a predicate to partition entries into false entries and true entries'
+ "Use a predicate to partition entries into false entries and true entries"
# partition(is_odd, range(10)) --> 0 2 4 6 8 and 1 3 5 7 9
t1, t2 = tee(iterable)
return filterfalse(pred, t1), filter(pred, t2)
@@ -881,7 +881,7 @@ which incur interpreter overhead.
def random_product(*args, repeat=1):
"Random selection from itertools.product(*args, **kwds)"
pools = [tuple(pool) for pool in args] * repeat
- return tuple(random.choice(pool) for pool in pools)
+ return tuple(map(random.choice, pools))

def random_permutation(iterable, r=None):
"Random selection from itertools.permutations(iterable, r)"
@@ -900,11 +900,11 @@ which incur interpreter overhead.
"Random selection from itertools.combinations_with_replacement(iterable, r)"
pool = tuple(iterable)
n = len(pool)
- indices = sorted(random.randrange(n) for i in range(r))
+ indices = sorted(random.choices(range(n), k=r))
return tuple(pool[i] for i in indices)

def nth_combination(iterable, r, index):
- 'Equivalent to list(combinations(iterable, r))[index]'
+ "Equivalent to list(combinations(iterable, r))[index]"
pool = tuple(iterable)
n = len(pool)
if r < 0 or r > n:
diff --git a/Lib/test/test_itertools.py b/Lib/test/test_itertools.py
index eaa6197bec395..702cf0820316b 100644
--- a/Lib/test/test_itertools.py
+++ b/Lib/test/test_itertools.py
@@ -2290,7 +2290,7 @@ def test_permutations_sizeof(self):
... "Count how many times the predicate is true"
... return sum(map(pred, iterable))

->>> def padnone(iterable):
+>>> def pad_none(iterable):
... "Returns the sequence elements and then returns None indefinitely"
... return chain(iterable, repeat(None))

@@ -2460,7 +2460,7 @@ def test_permutations_sizeof(self):
>>> list(pairwise('a'))
[]

->>> list(islice(padnone('abc'), 0, 6))
+>>> list(islice(pad_none('abc'), 0, 6))
['a', 'b', 'c', None, None, None]

>>> list(ncycles('abc', 3))

_______________________________________________
Python-checkins mailing list
Python-checkins@python.org
https://mail.python.org/mailman/listinfo/python-checkins