a = [1, 2, 3]
b = a[:]
b[0] = 0
print(a)
[1, 2, 3].  b = a[:] создает поверхностную копию списка a. Изменение b не влияет на a.
Вопрос: Что выведет следующий код?
a = [1, 2, 3]
b = a[:]
b[0] = 0
print(a)
Ответ:
Программа выведет: [1, 2, 3].
Объяснение:
a = [1, 2, 3]: Создается список a и присваивается ему значение [1, 2, 3].b = a[:]: Создается копия списка a с помощью среза ([:]) и присваивается переменной b.  Это важно, так как создается *новый* объект списка в памяти. Если бы мы написали b = a, то b просто указывала бы на тот же список, что и a.b[0] = 0:  Изменяется первый элемент (с индексом 0) списка b на 0.print(a):  Выводится список a. Поскольку b является независимой копией a, изменение b не влияет на a. Поэтому a сохраняет свое первоначальное значение.Таким образом, изменение b[0] не влияет на a, и при печати a выводится исходный список [1, 2, 3].