Являются ли кортежи действительно неизменными в Python?

Один вопрос, с которым я столкнулся сегодня, который фактически протестировал неизменность кортежей в Python:

One Solution collect form web for “Являются ли кортежи действительно неизменными в Python?”

Несмотря на то, что кортежи неизменяемы, объект внутри него может быть изменен

Поскольку в >>> t = (1, 2, [3, 4]) список изменен, поэтому вы можете изменить значение списка с помощью расширенного назначения. += но затем возникает исключение.

здесь список t [2] изменен, как вы можете видеть

 t =(1,2,[3,4]) >>> id(t[2]) 38073768 >>> t[2] += [5,6] Traceback (most recent call last): File "<input>", line 1, in <module> TypeError: 'tuple' object does not support item assignment >>> t[2] [3, 4, 5, 6] >>> id(t[2]) 38073768 

Как вы можете видеть, t [2] id никогда не изменяется.

введите описание изображения здесь

Что касается второго случая: t[2] = t[2] + [5,6] – он создает новый список и затем назначает ему t[2]

 >>> li = [1,2] >>> id(li) 38036304 >>> li = li + [3,4] >>> id(li) 38074368 >>> li += [5,6] >>> id(li) 38074368 

Как вы можете видеть, List = list + [] – это новый список с другим идентификатором. и поскольку кортеж является неизменным t [2] не получает привязан к новому объекту во втором случае

  • in и index в списке
  • Проблема с Python3 sleep ()
  • Порядок операций в понимании словаря
  • Удалить новую строку «\ n» из кодированных строк base64 в Python3?
  • TypeError: ufunc 'add' не содержит цикл с типами подписи подписи
  • Нечетная операция Python?
  • Замените определенное слово, учитывая его положение в текстовом файле (Python)
  • Можно ли прокручивать содержимое столбца Treeview, а не окно столбца в Tkinter?
  • Python - лучший язык программирования в мире.