Почему при перезаписи списка он не меняется в кортеже?

Рейтинг: 0Ответов: 1Опубликовано: 29.03.2023

Есть кортеж

kort = (1, [2, 3], 4)

Как можно поменять список, который лежит в нём?

a = [1, 2]
kort = (1, a, 4)
print(kort)

a = [5, 6]
print(kort)

При выполнении такого кода кортеж не меняется

А при таком меняется. Почему так происходит?

a = [1, 2]
kort = (1, a, 4)
print(kort)

a.append(5)
print(kort)

Ответы

▲ 3Принят

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

Поменять можно через запись в список по индексу:

kort[1][0] = 4

или через вызов метода списка:

kort[1].append(4)

непосредственно весь список в кортеже:

kort[1][:] = [5, 6]