summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEzio Melotti <ezio.melotti@gmail.com>2012-06-17 12:10:59 (GMT)
committerEzio Melotti <ezio.melotti@gmail.com>2012-06-17 12:10:59 (GMT)
commitf90ea1f0a0e258deb7211ce6736f050ce4f22ae2 (patch)
tree7fe1cca79e00b243a06201641464715c8803c238
parent14d99a14912343061463049e814a15127e79c69e (diff)
downloadcpython-f90ea1f0a0e258deb7211ce6736f050ce4f22ae2.zip
cpython-f90ea1f0a0e258deb7211ce6736f050ce4f22ae2.tar.gz
cpython-f90ea1f0a0e258deb7211ce6736f050ce4f22ae2.tar.bz2
#14840: Add a bit on the difference between tuples and lists. Initial patch by Zachary Ware.
-rw-r--r--Doc/tutorial/datastructures.rst30
-rw-r--r--Misc/ACKS1
2 files changed, 22 insertions, 9 deletions
diff --git a/Doc/tutorial/datastructures.rst b/Doc/tutorial/datastructures.rst
index 5fb72fd..eec34f0 100644
--- a/Doc/tutorial/datastructures.rst
+++ b/Doc/tutorial/datastructures.rst
@@ -349,17 +349,31 @@ A tuple consists of a number of values separated by commas, for instance::
... u = t, (1, 2, 3, 4, 5)
>>> u
((12345, 54321, 'hello!'), (1, 2, 3, 4, 5))
+ >>> # Tuples are immutable:
+ ... t[0] = 88888
+ Traceback (most recent call last):
+ File "<stdin>", line 1, in <module>
+ TypeError: 'tuple' object does not support item assignment
+ >>> # but they can contain mutable objects:
+ ... v = ([1, 2, 3], [3, 2, 1])
+ >>> v
+ ([1, 2, 3], [3, 2, 1])
+
As you see, on output tuples are always enclosed in parentheses, so that nested
tuples are interpreted correctly; they may be input with or without surrounding
parentheses, although often parentheses are necessary anyway (if the tuple is
-part of a larger expression).
-
-Tuples have many uses. For example: (x, y) coordinate pairs, employee records
-from a database, etc. Tuples, like strings, are immutable: it is not possible
-to assign to the individual items of a tuple (you can simulate much of the same
-effect with slicing and concatenation, though). It is also possible to create
-tuples which contain mutable objects, such as lists.
+part of a larger expression). It is not possible to assign to the individual
+items of a tuple, however it is possible to create tuples which contain mutable
+objects, such as lists.
+
+Though tuples may seem similar to lists, they are often used in different
+situations and for different purposes.
+Tuples are :term:`immutable`, and usually contain an heterogeneous sequence of
+elements that are accessed via unpacking (see later in this section) or indexing
+(or even by attribute in the case of :func:`namedtuples <collections.namedtuple>`).
+Lists are :term:`mutable`, and their elements are usually homogeneous and are
+accessed by iterating over the list.
A special problem is the construction of tuples containing 0 or 1 items: the
syntax has some extra quirks to accommodate these. Empty tuples are constructed
@@ -388,8 +402,6 @@ many variables on the left side of the equals sign as there are elements in the
sequence. Note that multiple assignment is really just a combination of tuple
packing and sequence unpacking.
-.. XXX Add a bit on the difference between tuples and lists.
-
.. _tut-sets:
diff --git a/Misc/ACKS b/Misc/ACKS
index 5ebdb39..b5cead9 100644
--- a/Misc/ACKS
+++ b/Misc/ACKS
@@ -986,6 +986,7 @@ Larry Wall
Kevin Walzer
Rodrigo Steinmuller Wanderley
Greg Ward
+Zachary Ware
Barry Warsaw
Steve Waterbury
Bob Watson