Копирование списков в Python

09.12.2023 0 Автор : Марина Николаевна
Копирование списков в Python

Копирование списков в Python. Выделим особенности копирования списков в Python.

Предположим, что в программе создан список А, например, так:

A = [1, 2, 3]

При этом в переменной А храниться ссылка на список, т.е. адрес этого списка в памяти. Оператор

В = А

копируют в переменную В тот же самый адрес. Теперь две переменные А и В, будут ссылаться на один и тот же список (рисунок 1)

При изменении списка А будет также изменяться  список В, так как это один и тот же список, к которому обращаются по двум разным именам.

На рисунке 2  показана ситуация после выполнения оператора 

A[0]=0

Рисунок 2.

Данную особенность Python  учитывает при работе со списками. Если нам нужна именно копия списка (а не еще одна ссылка на него), можно использовать срез, включающий все элементы:

B = [:]

Теперь А и В — это независимые списки, и изменение одного из них не меняет второй (рисунок 3)

Рисунок 3.

Вместо среза можно было вызвать функцию copy из модуля copy:

Это так называемая «поверхностная» копия — она не создает полную копию, если список содержит какие-то изменяемые объекты, например, другие списки.

Для полного копирования используется функция deepcopy из того же модуля:

Выводы к разделу "Алгоритмы обработки массивов"

  • Задачи суммирования, перемножения, подсчета элементов массива решаются с помощью цикла, в котором перебираются все элементы.
  • Для вычисления суммы элементов массива используется вспомогательная переменная, в которой накапливается сумма. Начальное значение этой переменной равно нулю.
  • При вычислении произведения начальное значение вспомогательной переменной должно быть равно 1.
  • При подсчете элементов, удовлетворяющих условию, используется переменная -счетчик, которая увеличивается на 1 каждый раз, когда найден новый подходящий элемент. Её еачальное значение должно быть равно нулю.
  • Решения «в стиле Python»  получаются проще за счет использования генераторов и стандартных функций обработки массивов. Часто они связаны с построением вспомогательного массива.
  • Оператор присваивания В = А для списков в Python создает не копию списка А, а вторую ссылку на тот же список.  Независимую копию списка можно построить с помощью среза: В = А [:]

Тема «Сумма элементов массива» рассмотрена по ссылке.