Я уже рассказывал Вам об одном из типов даных в Python - о списках, которые аналогичны по функционалу таковым в PHP , так как представляют коллекцию некоторых значений.

Кортежи - неизменяемые списки в Python

Я уже рассказывал Вам об одном из типов даных в Python - о списках, которые аналогичны по функционалу таковым в PHP, так как представляют коллекцию некоторых значений.

Сегодня я хочу рассказать Вам о другом типе данных в Python - о кортежах. Кортежи - это те же списки, которые однако нельзя изменить. Также кортежи создаются с помощью круглых кавычек, в отличие от квадратных у обычных списков, при этом учтите, что одно значение в кавычках это не кортеж, чтобы одно значение в кавычках стало кортежем, после него надо обязательно поставить запятую:

nums = (1) # просто число nums = (1,) # уже не число, а неизменяяемый список - кортеж

К кортежам применимы теже операции конкатенации, среза и т.д., что и для обычных списков.

Доступ к значению кортежа осуществляется с помощью оператора tuple[index], при этом индекс начинается с нуля. Срез кортежа можно получить с помощью следующей конструкции tuple[first:last].

Изменение значений в кортеже запрещено, т.е. при выполнении следующей операции вы получите ошибку.

nums[0] = 2 # TypeError: 'tuple' object does not support item assignment

На кортежами можно выполнить следующие базовые операции:

>>> len(nums) -> 1             # возвращает длину
>>> nums  nums -> (1,1)        # кортеж из двух значений
>>> nums * 4 -> (12,12,12,12)  # повторение 4 раза
>>> 3 in nums -> False         # поиск элемента в кортеже

Таким образом, кортежи - это неизменяемые списки. Причины необходимости их наличия заключается в следеющем:

  • эффективность копирования: вместо копирования неизменяемого объекта вы можете использовать его псевдоним (связать переменную со ссылкой)
  • эффективность сравнения: когда вы используете копирование по ссылке, вы можете сравнивать две переменные, сравнивая местоположение, а не содержимое
  • вам нужно хранить не более одной копии любого неизменного значения
  • нет необходимости синхронизировать доступ к неизменным объектам в параллельном коде
  • const правильность: некоторые значения не должны быть изменены.