summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMiss Skeleton (bot) <31488909+miss-islington@users.noreply.github.com>2020-10-25 02:53:41 (GMT)
committerGitHub <noreply@github.com>2020-10-25 02:53:41 (GMT)
commit2cccc29eaf20694006c03af0f4740abdf8ae5579 (patch)
treedeea9203fe78167973d40f1f204a5cf976c38480
parent427cb0aa78813b89a3f100073bf7d70a53510f57 (diff)
downloadcpython-2cccc29eaf20694006c03af0f4740abdf8ae5579.zip
cpython-2cccc29eaf20694006c03af0f4740abdf8ae5579.tar.gz
cpython-2cccc29eaf20694006c03af0f4740abdf8ae5579.tar.bz2
bpo-29981: Add examples and update index for set, dict, and generator comprehensions'(GH-20272)
Co-authored-by: RĂ©mi Lapeyre <remi.lapeyre@henki.fr> (cherry picked from commit 2d55aa9e37c9c84f4f6a8135d0326da0bcd8f38b) Co-authored-by: Florian Dahlitz <f2dahlitz@freenet.de>
-rw-r--r--Doc/glossary.rst12
-rw-r--r--Doc/library/stdtypes.rst14
-rw-r--r--Doc/reference/expressions.rst4
-rw-r--r--Misc/ACKS1
4 files changed, 31 insertions, 0 deletions
diff --git a/Doc/glossary.rst b/Doc/glossary.rst
index 778fd40..847500e 100644
--- a/Doc/glossary.rst
+++ b/Doc/glossary.rst
@@ -309,6 +309,12 @@ Glossary
keys can be any object with :meth:`__hash__` and :meth:`__eq__` methods.
Called a hash in Perl.
+ dictionary comprehension
+ A compact way to process all or part of the elements in an iterable and
+ return a dictionary with the results. ``results = {n: n ** 2 for n in
+ range(10)}`` generates a dictionary containing key ``n`` mapped to
+ value ``n ** 2``. See :ref:`comprehensions`.
+
dictionary view
The objects returned from :meth:`dict.keys`, :meth:`dict.values`, and
:meth:`dict.items` are called dictionary views. They provide a dynamic
@@ -1027,6 +1033,12 @@ Glossary
interface can be registered explicitly using
:func:`~abc.ABCMeta.register`.
+ set comprehension
+ A compact way to process all or part of the elements in an iterable and
+ return a set with the results. ``results = {c for c in 'abracadabra' if
+ c not in 'abc'}`` generates the set of strings ``{'r', 'd'}``. See
+ :ref:`comprehensions`.
+
single dispatch
A form of :term:`generic function` dispatch where the implementation is
chosen based on the type of a single argument.
diff --git a/Doc/library/stdtypes.rst b/Doc/library/stdtypes.rst
index c3f5c04..1de48e1 100644
--- a/Doc/library/stdtypes.rst
+++ b/Doc/library/stdtypes.rst
@@ -4119,6 +4119,12 @@ The constructors for both classes work the same:
objects. If *iterable* is not specified, a new empty set is
returned.
+ Sets can be created by several means:
+
+ * Use a comma-separated list of elements within braces: ``{'jack', 'sjoerd'}``
+ * Use a set comprehension: ``{c for c in 'abracadabra' if c not in 'abc'}``
+ * Use the type constructor: ``set()``, ``set('foobar')``, ``set(['a', 'b', 'foo'])``
+
Instances of :class:`set` and :class:`frozenset` provide the following
operations:
@@ -4311,6 +4317,14 @@ pairs within braces, for example: ``{'jack': 4098, 'sjoerd': 4127}`` or ``{4098:
Return a new dictionary initialized from an optional positional argument
and a possibly empty set of keyword arguments.
+ Dictionaries can be created by several means:
+
+ * Use a comma-separated list of ``key: value`` pairs within braces:
+ ``{'jack': 4098, 'sjoerd': 4127}`` or ``{4098: 'jack', 4127: 'sjoerd'}``
+ * Use a dict comprehension: ``{}``, ``{x: x ** 2 for x in range(10)}``
+ * Use the type constructor: ``dict()``,
+ ``dict([('foo', 100), ('bar', 200)])``, ``dict(foo=100, bar=200)``
+
If no positional argument is given, an empty dictionary is created.
If a positional argument is given and it is a mapping object, a dictionary
is created with the same key-value pairs as the mapping object. Otherwise,
diff --git a/Doc/reference/expressions.rst b/Doc/reference/expressions.rst
index f1f19c3..938a973 100644
--- a/Doc/reference/expressions.rst
+++ b/Doc/reference/expressions.rst
@@ -162,6 +162,8 @@ ambiguities and allow common typos to pass uncaught.
Displays for lists, sets and dictionaries
-----------------------------------------
+.. index:: single: comprehensions
+
For constructing a list, a set or a dictionary Python provides special syntax
called "displays", each of them in two flavors:
@@ -260,6 +262,7 @@ Set displays
.. index::
pair: set; display
+ pair: set; comprehensions
object: set
single: {} (curly brackets); set expression
single: , (comma); expression list
@@ -287,6 +290,7 @@ Dictionary displays
.. index::
pair: dictionary; display
+ pair: dictionary; comprehensions
key, datum, key/datum pair
object: dictionary
single: {} (curly brackets); dictionary expression
diff --git a/Misc/ACKS b/Misc/ACKS
index f06fad7..9ad9dff 100644
--- a/Misc/ACKS
+++ b/Misc/ACKS
@@ -379,6 +379,7 @@ Brian Curtin
Jason Curtis
Hakan Celik
Paul Dagnelie
+Florian Dahlitz
Lisandro Dalcin
Darren Dale
Andrew Dalke