В этой статье я разбираю Кортежи в Python 3. Вы узнаете, какими свойствами обладают кортежи и как можно с ними работать.
Свойства, индексация и срезы
Я уже писал про последовательности и множества в Python 3. Кортеж — это неизменяемый список, то есть это последовательность объектов, которую нельзя изменить (можно лишь создать новый кортеж).
Кортежи в Python 3 записываются в круглых скобках, например так:
my_tuple = (1, 2, 'три')
В коде выше мы создали кортеж (1, 2, ‘три’) и связали его с переменной my_tuple. Как видите, наш кортеж хранит и числа и строки.
Изменить кортеж, то есть добавить или удалить объекты из него, мы не можем.
Кортеж, так же как и список, индексирует свои элементы:
Индексация позволяет обращаться к объектам по индексу (положительному или отрицательному), а также создавать срезы.
Получение некоторых свойств кортежа, обращение по индексам и создание срезов показано в примере ниже:
### Код my_tuple = (1, 2, 'три') print('Тип объекта - ', type(my_tuple)) # Тип объекта print('Длина - ',len(my_tuple)) # Длина print('Первый элемент - ', my_tuple[0]) # Обращение по индексу print('Срез [1:4] - ', my_tuple[1:4]) # Срез от 2-ого элемента до 3-его print('Срез [0:5:2] - ', my_tuple[0:5:2]) # Срез от 1-ого элемента до 5-ого, с шагом 2 ### Исполнение Тип объекта - <class 'tuple'> Длина - 3 Первый элемент - 1 Срез [1:4] - (2, 'три') Срез [0:5:2] - (1, 'три')
Запомните, когда вы создаёте срез, то указываете от какого элемента (включительно) и до какого элемента (не включительно). Вы можете указать шаг среза, например каждый второй элемент, или каждый третий, и так далее.
Работа с кортежами в Python
Точно также как строки и списки, кортежи поддерживают конкатенацию и повторение:
### Код my_tuple1 = (1, 2, 'три') my_tuple2 = (4, 5, 'шесть') print(my_tuple1 + my_tuple2) print(my_tuple1 * 3) ### Исполнение (1, 2, 'три', 4, 5, 'шесть') (1, 2, 'три', 1, 2, 'три', 1, 2, 'три')
Также можем проверить, содержится ли элемент в кортеже:
### Код my_tuple = (1, 2, 'три') print(1 in my_tuple) print(5 in my_tuple) ### Исполнение True False
И можем подсчитать количество определённых элементов:
### Код my_tuple = (1, 2, 5, 2, 7, 1, 2, 4, 0) print(my_tuple.count(2)) ### Исполнение 3
Если нужно изменить кортеж, его обычно превращают в список, а затем уже работаю со списком:
### Код my_tuple = (1, 2, 5, 2, 7, 1, 2, 4, 0) my_list = list(my_tuple) print(my_tuple) print(my_list) ### Исполнение (1, 2, 5, 2, 7, 1, 2, 4, 0) [1, 2, 5, 2, 7, 1, 2, 4, 0]
Зачем же применять кортежи, если есть списки? Дело в том, что неизменяемость кортежей обеспечивает определенную степень целостности. То есть разработчик может быть уверен, что кортеж не изменится через ссылку где-то в другом месте программы. Для списков же такая гарантия отсутствует.
Итог
Немного подробнее про кортежи вы можете почитать в официальной документации. В этой статье я разобрал лишь некоторую часть свойств и методов кортежей.