На этом шаге мы рассмотрим создание и работу с кортежами.
Кортежи, как и списки, являются упорядоченными последовательностями элементов. Они во многом аналогичны спискам, но имеют одно очень важное отличие - изменить кортеж нельзя. Можно сказать, что кортеж - это список, доступный только для чтения.
Создать кортеж можно следующими способами:
>>> tuple() # Создаем пустой кортеж () >>> tuple("String") # Преобразуем строку в кортеж ('S', 't', 'r', 'i', 'n', 'g') >>> tuple([1, 2, 3, 4, 5]) # Преобразуем список в кортеж (1, 2, 3, 4, 5)
>>> t1 = () # Создаем пустой кортеж >>> t2 = (5,) # Создаем кортеж из одного элемента >>> t3 = (1, "str", (3, 4)) # Кортеж из трех элементов >>> t4 = 1, "str", (3, 4) # Кортеж из трех элементов >>> t1, t2, t3, t4 ((), (5,), (1, 'str', (3, 4)), (1, 'str', (3, 4)) )
Обратите особое внимание на вторую строку примера. Чтобы создать кортеж из одного элемента, необходимо в конце указать запятую. Именно запятые формируют кортеж, а не круглые скобки. Если внутри круглых скобок нет запятых, то будет создан объект другого типа. Пример:
>>> t = (5); type(t) # Получили число, а не кортеж! <class 'int'> >>> t = ("str"); type(t) # Получили строку, а не кортеж! <class 'str'>
Четвертая строка в исходном примере также доказывает, что не скобки формируют кортеж, а запятые. Помните, что любое выражение в языке Python можно заключить в круглые скобки, а чтобы получить кортеж, необходимо указать запятые.
Позиция элемента в кортеже задается индексом. Обратите внимание на то, что нумерация элементов кортежа (как и списка) начинается с 0, а не с 1. Как и все последовательности, кортежи поддерживают обращение к элементу по индексу, получение среза, конкатенацию (оператор +), повторение (оператор *), проверку на вхождение (оператор in) и невхождение (оператор not in). Пример:
>>> t = (1, 2, 3, 4, 5, 6, 7, 8, 9) >>> t[0] # Получаем значение первого элемента кортежа 1 >>> t[::-l] # Изменяем порядок следования элементов (9, 8, 7, 6, 5, 4, 3, 2, 1) >>> t[2:5] # Получаем срез (3, 4, 5) >>> 8 in t, 0 in t # Проверка на вхождение (True, False) >>> (1, 2, 3) * 3 # Повторение (1, 2, 3, 1, 2, 3, 1, 2, 3) >>> (1, 2, 3) + (4, 5, 6) # Конкатенация (1, 2, 3, 4, 5, 6)
Кортежи, как уже неоднократно отмечалось, относятся к неизменяемым типам данных. Иными словами, можно получить элемент по индексу, но изменить его нельзя:
>>> t = (1, 2, 3) # Создаем кортеж >>> t[0] # Получаем элемент по индексу 1 >>> t[0] = 50 # Изменить элемент по индексу нельзя! Traceback (most recent call last): File "<pyshell#95>", line 1, in <module> t[0] =50 # Изменить элемент по индексу нельзя! TypeError: 'tuple' object does not support item assignment
Кортежи поддерживают уже знакомые нам по спискам функции len(), min(), max(), методы index() и count(). Примеры:
>>> t = (1, 2, 3) # Создаем кортеж >>> len(t) # Получаем количество элементов 3 >>> t = (1, 2, 1, 2, 1) >>> t.index(1), t.index(2) # Ищем элементы в кортеже (0, 1)
Со следующего шага мы начнем рассматривать множества.