Safari Books Online is a digital library providing on-demand subscription access to thousands of learning resources.
The tuple object (pronounced “toople” or “tuhple,” depending on who you ask) is roughly like a list that cannot be changed—tuples are sequences, like lists, but they are immutable, like strings. Syntactically, they are coded in parentheses instead of square brackets, and they support arbitrary types, arbitrary nesting, and the usual sequence operations:
>>>T = (1, 2, 3, 4)# A 4-item tuple >>>len(T)# Length 4 >>T + (5, 6)# Concatenation (1, 2, 3, 4, 5, 6) >>>T[0]# Indexing, slicing, and more 1
Tuples also have two type-specific callable methods in Python 3.0, but not nearly as many as lists:
>>>T.index(4)# Tuple methods: 4 appears at offset 3 3 >>>T.count(4)# 4 appears once 1
The primary distinction for tuples is that they cannot be changed once created. That is, they are immutable sequences:
>>>T[0] = 2# Tuples are immutable...error text omitted...TypeError: 'tuple' object does not support item assignment
Like lists and dictionaries, tuples support mixed types and nesting, but they don’t grow and shrink because they are immutable:
>>>T = ('spam', 3.0, [11, 22, 33])>>>T[1]3.0 >>>T[2][1]22 >>>T.append(4)AttributeError: 'tuple' object has no attribute 'append'
So, why have a type that is like a list, but supports fewer operations? Frankly, tuples are not generally used as often as lists in practice, but their immutability is the whole point. If you pass a collection of objects around your program as a list, it can be changed anywhere; if you use a tuple, it cannot. That is, tuples provide a sort of integrity constraint that is convenient in programs larger than those we’ll write here. We’ll talk more about tuples later in the book. For now, though, let’s jump ahead to our last major core type: the file.