a = [1, 2]
b = a.copy()
print(b)
Программа выведет: [1, 2]
b = a.copy() создает поверхностную копию списка a. Это означает, что b будет новым списком с теми же элементами, что и в a.  Изменения в a не повлияют на b, и наоборот, пока элементы являются неизменяемыми типами (как int в данном случае).
Данный код демонстрирует создание копии списка в Python. Разберем каждую строку:
a = [1, 2]: Создается список с именем a, содержащий два элемента: 1 и 2.
    b = a.copy(): Создается новая переменная b и ей присваивается поверхностная копия списка a. Метод copy() возвращает новый объект списка с теми же элементами.  Важно отметить, что если бы список a содержал изменяемые объекты (например, другие списки или словари), то b содержал бы ссылки на эти же объекты, а не их копии.  В данном случае, элементы списка a - числа, которые являются неизменяемыми, поэтому копирование происходит корректно.
    print(b):  Выводит содержимое списка b в консоль.
    
    Таким образом, переменная b будет содержать копию списка a, и вывод будет идентичен содержимому a.
  
[1, 2]
        Метод copy() создает поверхностную копию списка.  Если список содержит изменяемые объекты (например, другие списки или словари), то изменения в этих объектах будут видны и в исходном, и в скопированном списке. Для создания глубокой копии списка (где все вложенные объекты также копируются) необходимо использовать функцию deepcopy из модуля copy.
    
      Альтернативой a.copy() является создание копии списка с помощью среза: b = a[:].  Этот способ также создает поверхностную копию.