Кортеж изменяемый или нет?

Кортеж (tuple) в Python - неизменяемый тип данных. Это значит, что после создания кортежа, вы не можете изменить его элементы напрямую (добавить, удалить или переназначить).

Кортеж в Python неизменяемый (immutable) тип данных.

Это означает, что после создания кортежа, вы не можете изменить его элементы, добавить новые элементы или удалить существующие. Попытка сделать это приведет к ошибке TypeError.

Примеры:

  • Нельзя изменить элемент по индексу: my_tuple[0] = 'new value' (вызовет ошибку).
  • Нельзя использовать методы append(), insert(), remove(), pop(), которые изменяют списки.

Важно: Неизменяемость относится к самим элементам кортежа. Если кортеж содержит изменяемые объекты (например, списки), то содержимое этих списков внутри кортежа можно изменять. Сам кортеж при этом остается неизменным (его структура и ссылки на объекты не меняются).

Пример с изменяемым объектом внутри кортежа:

    
      my_tuple = ([1, 2], 'hello')
      my_tuple[0].append(3)  #  Вполне допустимо, т.к. меняется список, а не сам кортеж
      print(my_tuple) # Output: ([1, 2, 3], 'hello')
    
  

Почему кортежи неизменяемы?

  • Безопасность: Неизменяемость гарантирует, что кортеж останется в исходном состоянии, что полезно для хранения данных, которые не должны изменяться (например, константы).
  • Ключи словарей: Кортежи можно использовать в качестве ключей словарей, в то время как списки – нельзя, потому что ключи словарей должны быть неизменяемыми.
  • Оптимизация: Python может выполнять оптимизацию памяти и производительности для неизменяемых объектов.
0