Python 3. Кортежи

В этой статье я разбираю Кортежи в Python 3. Вы узнаете, какими свойствами обладают кортежи и как можно с ними работать.















Свойства, индексация и срезы




Я уже писал про последовательности и множества в Python 3. Кортеж — это неизменяемый список, то есть это последовательность объектов, которую нельзя изменить (можно лишь создать новый кортеж).




Кортежи в Python 3 записываются в круглых скобках, например так:




my_tuple = (1, 2, 'три')




В коде выше мы создали кортеж (1, 2, ‘три’) и связали его с переменной my_tuple. Как видите, наш кортеж хранит и числа и строки.




Изменить кортеж, то есть добавить или удалить объекты из него, мы не можем.




Кортеж, так же как и список, индексирует свои элементы:




Индексация списка в Python 3
Индексация кортежа в Python 3




Индексация позволяет обращаться к объектам по индексу (положительному или отрицательному), а также создавать срезы.




Получение некоторых свойств кортежа, обращение по индексам и создание срезов показано в примере ниже:




### Код
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]




Зачем же применять кортежи, если есть списки? Дело в том, что неизменяемость кортежей обеспечивает определенную степень целостности. То есть разработчик может быть уверен, что кортеж не изменится через ссылку где-то в другом месте программы. Для списков же такая гарантия отсутствует.









Итог




Немного подробнее про кортежи вы можете почитать в официальной документации. В этой статье я разобрал лишь некоторую часть свойств и методов кортежей.



2023-03-10T12:14:38
Python