#14840: Add a bit on the difference between tuples and lists. Initial patch by Zachary Ware.

This commit is contained in:
Ezio Melotti 2012-06-17 14:10:59 +02:00
parent 14d99a1491
commit f90ea1f0a0
2 changed files with 21 additions and 8 deletions

View File

@ -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).
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.
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.
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:

View File

@ -986,6 +986,7 @@ Larry Wall
Kevin Walzer
Rodrigo Steinmuller Wanderley
Greg Ward
Zachary Ware
Barry Warsaw
Steve Waterbury
Bob Watson