diff --git a/Doc/glossary.rst b/Doc/glossary.rst index f8d0e67f201..34e48582949 100644 --- a/Doc/glossary.rst +++ b/Doc/glossary.rst @@ -393,7 +393,7 @@ Glossary also :term:`immutable`. named tuple - Any tuple subclass whose indexable elements are also accessible using + Any tuple-like class whose indexable elements are also accessible using named attributes (for example, :func:`time.localtime` returns a tuple-like object where the *year* is accessible either with an index such as ``t[0]`` or with a named attribute like ``t.tm_year``). diff --git a/Doc/library/collections.rst b/Doc/library/collections.rst index 41b4eba781a..32cc6395e27 100644 --- a/Doc/library/collections.rst +++ b/Doc/library/collections.rst @@ -206,7 +206,7 @@ For example:: .. method:: most_common([n]) Return a list of the *n* most common elements and their counts from the - most common to the least. If *n* not specified, :func:`most_common` + most common to the least. If *n* is not specified, :func:`most_common` returns *all* elements in the counter. Elements with equal counts are ordered arbitrarily:: diff --git a/Doc/library/itertools.rst b/Doc/library/itertools.rst index 618cf7da475..634b909aa3b 100644 --- a/Doc/library/itertools.rst +++ b/Doc/library/itertools.rst @@ -290,7 +290,7 @@ loops that truncate the stream. class groupby(object): # [k for k, g in groupby('AAAABBBCCDAABBB')] --> A B C D A B - # [(list(g)) for k, g in groupby('AAAABBBCCD')] --> AAAA BBB CC D + # [list(g) for k, g in groupby('AAAABBBCCD')] --> AAAA BBB CC D def __init__(self, iterable, key=None): if key is None: key = lambda x: x @@ -591,8 +591,8 @@ which incur interpreter overhead. return map(function, count(start)) def nth(iterable, n): - "Returns the nth item or empty list" - return list(islice(iterable, n, n+1)) + "Returns the nth item or None" + return next(islice(iterable, n, None), None) def quantify(iterable, pred=bool): "Count how many times the predicate is true" diff --git a/Lib/test/test_itertools.py b/Lib/test/test_itertools.py index f69ad26bbde..50c3402105a 100644 --- a/Lib/test/test_itertools.py +++ b/Lib/test/test_itertools.py @@ -1371,8 +1371,8 @@ Samuele ... return map(function, count(start)) >>> def nth(iterable, n): -... "Returns the nth item or empty list" -... return list(islice(iterable, n, n+1)) +... "Returns the nth item or None" +... return next(islice(iterable, n, None), None) >>> def quantify(iterable, pred=bool): ... "Count how many times the predicate is true" @@ -1469,7 +1469,10 @@ perform as purported. [0, 2, 4, 6] >>> nth('abcde', 3) -['d'] +'d' + +>>> nth('abcde', 9) is None +True >>> quantify(range(99), lambda x: x%2==0) 50