What is Python Tuple?
A tuple is an ordered collection of values.
Tuples are a lot like lists:
- Tuples are ordered – Tuples maintains a left-to-right positional ordering among the items they contain.
- Accessed by index – Items in a tuple can be accessed using an index.
- Tuples can contain any sort of object – It can be numbers, strings, lists and even other tuples.
- Tuples are immutable – you can’t add, delete, or change items after the tuple is defined.
Create a Tuple
You can create a tuple by placing a comma-separated sequence of items in parentheses
# A tuple of integers T = (1, 2, 3) # A tuple of strings T = ('red', 'green', 'blue')
The items of a tuple don’t have to be the same type. The following tuple contains an integer, a string, a float, and a boolean.
# A tuple with mixed datatypes T = (1, 'abc', 1.23, True)
A tuple containing zero items is called an empty tuple and you can create one with empty
# An empty tuple T = ()
Syntactically, a tuple is just a comma-separated list of values.
# A tuple without parentheses T = 1, 'abc', 1.23, True
You don’t need the parentheses to create a tuple. It’s the trailing commas that really define a tuple. But using them doesn’t hurt; also they help make the tuple more visible.
If you have only one value in a tuple, you can indicate this by including a trailing comma
, just before the closing parentheses.
T = (4,) print(type(T)) # Prints <type 'tuple'>
Otherwise, Python will think you’ve just typed a value inside regular parentheses.
# Not a tuple T = (4) print(type(T)) # Prints <type 'int'>
The tuple() Constructor
You can convert other data types to tuple using Python’s tuple() constructor.
# Convert a list to a tuple T = tuple([1, 2, 3]) print(T) # Prints (1, 2, 3)
# Convert a string to a tuple T = tuple('abc') print(T) # Prints ('a', 'b', 'c')
A tuple can contain sub-tuple, which in turn can contain sub-tuples themselves, and so on. This is known as nested tuple. You can use them to arrange data into hierarchical structures.
T = ('red', ('green', 'blue'), 'yellow')
Tuple Packing & Unpacking
When a tuple is created, the items in the tuple are packed together into the object.
T = ('red', 'green', 'blue', 'cyan') print(T) # Prints ('red', 'green', 'blue', 'cyan')
In above example, the values ‘red’, ‘green’, ‘blue’ and ‘cyan’ are packed together in a tuple.
When a packed tuple is assigned to a new tuple, the individual items are unpacked (assigned to the items of a new tuple).
T = ('red', 'green', 'blue', 'cyan') (a, b, c, d) = T print(a) # Prints red print(b) # Prints green print(c) # Prints blue print(d) # Prints cyan
In above example, the tuple
T is unpacked into a, b, c and d variables.
When unpacking, the number of variables on the left must match the number of items in the tuple.
# Common errors in tuple unpacking T = ('red', 'green', 'blue', 'cyan') (a, b) = T # Triggers ValueError: too many values to unpack T = ('red', 'green', 'blue') (a, b, c, d) = T # Triggers ValueError: not enough values to unpack (expected 4, got 3)
Tuple unpacking comes handy when you want to swap values of two variables without using a temporary variable.
# Swap values of 'a' and 'b' a = 1 b = 99 a, b = b, a print(a) # Prints 99 print(b) # Prints 1
While unpacking a tuple, the right side can be any kind of sequence (tuple, string or list).
# Split an email address into a user name and a domain addr = 'email@example.com' user, domain = addr.split('@') print(user) # Prints bob print(domain) # Prints python.org
Access Tuple Items
You can access individual items in a tuple using an index in square brackets. Note that tuple indexing starts from 0.
The indices for the elements in a tuple are illustrated as below:
T = ('red', 'green', 'blue', 'yellow', 'black') print(T) # Prints red print(T) # Prints blue
You can access a tuple by negative indexing as well. Negative indexes count backward from the end of the tuple. So,
T[-1] refers to the last item,
T[-2] is the second-last, and so on.
T = ('red', 'green', 'blue', 'yellow', 'black') print(T[-1]) # Prints black print(T[-2]) # Prints yellow
To access a range of items in a tuple, you need to slice a tuple using a slicing operator. Tuple slicing is similar to list slicing.
T = ('a', 'b', 'c', 'd', 'e', 'f') print(T[2:5]) # Prints ('c', 'd', 'e') print(T[0:2]) # Prints ('a', 'b') print(T[3:-1]) # Prints ('d', 'e')
Change Tuple Items
Tuples are immutable (unchangeable). Once a tuple is created, it cannot be modified.
T = ('red', 'green', 'blue') T = 'black' # Triggers TypeError: 'tuple' object does not support item assignment
The tuple immutability is applicable only to the top level of the tuple itself, not to its contents. For example, a list inside a tuple can be changed as usual.
T = (1, [2, 3], 4) T = 'xx' print(T) # Prints (1, ['xx', 3], 4)
Delete a Tuple
Tuples cannot be modified, so obviously you cannot delete any item from it. However, you can delete the tuple completely with del keyword.
T = ('red', 'green', 'blue') del T
Tuple Concatenation & Repetition
Tuples can be joined using the concatenation operator
+ or Replication operator
# Concatenate T = ('red', 'green', 'blue') + (1, 2, 3) print(T) # Prints ('red', 'green', 'blue', 1, 2, 3) # Replicate T = ('red',) * 3 print(T) # Prints ('red', 'red', 'red')
Find Tuple Length
To find how many items a tuple has, use len() method.
T = ('red', 'green', 'blue') print(len(T)) # Prints 3
Check if item exists in a tuple
To determine whether a value is or isn’t in a tuple, you can use in and not in operators with if statement.
# Check for presence T = ('red', 'green', 'blue') if 'red' in T: print('yes') # Check for absence T = ('red', 'green', 'blue') if 'yellow' not in T: print('yes')
Iterate through a tuple
To iterate over the items of a tuple, use a simple for loop.
T = ('red', 'green', 'blue') for item in T: print(item) # Prints red green blue
There are two methods to sort a tuple.
Method 1: Use the built-in sorted() method that accepts any sequence object.
T = ('cc', 'aa', 'dd', 'bb') print(tuple(sorted(T))) # Prints ('aa', 'bb', 'cc', 'dd')
Method 2: Convert a tuple to a mutable object like list (using list constructor), gain access to a sorting method call (sort()) and convert it back to tuple.
T = ('cc', 'aa', 'dd', 'bb') tmp = list(T) # convert tuple to list tmp.sort() # sort list T = tuple(tmp) # convert list to tuple print(T) # Prints ('aa', 'bb', 'cc', 'dd')
Python Tuple Methods
Python has a set of built-in methods that you can call on tuple objects.
|count()||Returns the count of specified item in the tuple|
|index()||Returns the index of first instance of the specified item|
Built-in Functions with Tuple
Python also has a set of built-in functions that you can use with tuple objects.
|all()||Returns True if all tuple items are true|
|any()||Returns True if any tuple item is true|
|enumerate()||Takes a tuple and returns an enumerate object|
|len()||Returns the number of items in the tuple|
|max()||Returns the largest item of the tuple|
|min()||Returns the smallest item of the tuple|
|sorted()||Returns a sorted tuple|
|sum()||Sums items of the tuple|
|tuple()||Converts an iterable (list, string, set etc.) to a tuple|