Почему при перезаписи списка он не меняется в кортеже?
Есть кортеж
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)
Ответы (1 шт):
Автор решения: strawdog
→ Ссылка
В списке хранится не переменная, а объект. Если вы перезаписываете в переменную новый объект (фактически присваиваете ей ссылку на другой объект), объект в списке не меняется, потому что он уже не имеет связи с этой переменной. Если вы мутируете объект (например, добавляете элементы в список), то список и в кортеже поменяется.
Поменять можно через запись в список по индексу:
kort[1][0] = 4
или через вызов метода списка:
kort[1].append(4)
непосредственно весь список в кортеже:
kort[1][:] = [5, 6]