Кортеж содержит список — чем отличается от кортежа с числами? С чем это связано?
Answer from AI
sobes.tech AI
Кортеж в Python — это неизменяемый (immutable) тип данных, а список — изменяемый (mutable). Если кортеж содержит числа, то эти числа неизменяемы, и весь кортеж полностью неизменяем.
Однако, если кортеж содержит внутри себя список, то сам кортеж по-прежнему нельзя заменить или изменить (например, нельзя заменить элемент списка на другой объект), но содержимое вложенного списка можно изменять, так как список — изменяемый объект.
Это связано с тем, что неизменяемость кортежа относится к самим ссылкам на объекты внутри него, а не к объектам, на которые эти ссылки указывают. Если внутри кортежа лежит изменяемый объект (например, список), то его содержимое можно менять.
Пример:
t = (1, 2, [3, 4])
# t[0] = 10 # Ошибка, кортеж нельзя изменить
t[2].append(5) # Это допустимо, изменяем содержимое списка внутри кортежа
print(t) # (1, 2, [3, 4, 5])
Таким образом, кортеж с числами полностью неизменяем, а кортеж со списком — частично неизменяем: нельзя менять ссылки на объекты, но можно менять содержимое изменяемых объектов внутри.