Sobes.tech
Middle
21

Кортеж содержит список — чем отличается от кортежа с числами? С чем это связано?

Companies where asked
СБЕРСБЕР

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])

Таким образом, кортеж с числами полностью неизменяем, а кортеж со списком — частично неизменяем: нельзя менять ссылки на объекты, но можно менять содержимое изменяемых объектов внутри.