Определить разницу между изменяемыми и неизменяемыми объектами

19. Определить разницу между изменяемыми и неизменяемыми объектами

Условие задачи Даны список и кортеж. Нужно определить, что произойдет при попытке изменить элемент списка и элемент кортежа по индексу.

a = [1, 2, 3, 4, 5]
a[2] = 100

print(f"{a = }")

b = (1, 2, 3, 4, 5)
b[3] = 100

print(f"{b = }")
Спойлеры к решению
Подсказки
  • Список list является изменяемым типом данных.
  • Поэтому элемент списка можно изменить по индексу.
  • Кортеж tuple является неизменяемым типом данных.
  • Поэтому попытка изменить элемент кортежа по индексу приведёт к ошибке.
  • После ошибки выполнение программы остановится, если ошибка не обработана через try/except.
Решение
a = [1, 2, 3, 4, 5]
a[2] = 100

print(f"{a = }")

b = (1, 2, 3, 4, 5)
b[3] = 100

print(f"{b = }")

Сначала список изменится успешно:

a[2] = 100

Индекс 2 — это третий элемент списка. Поэтому список станет таким:

a = [1, 2, 100, 4, 5]

После этого выполняется попытка изменить кортеж:

b[3] = 100

Но кортежи в Python неизменяемые, поэтому будет ошибка:

TypeError: 'tuple' object does not support item assignment

Итоговый вывод будет таким:

a = [1, 2, 100, 4, 5]
TypeError: 'tuple' object does not support item assignment

Строка:

print(f"{b = }")

не выполнится, потому что программа остановится на ошибке при попытке изменить элемент кортежа.