Нынешним новым языком программирования является Python, который имеет очень широкое применение в различных областях.

ЧТО??

Мы видим много ошибок при работе с программированием на Python. Я придумал один как

маленький_l=[1,2,3]

org_l=[small_l для i в диапазоне (4)]

что вы видите из приведенного выше кода, что «org_l» должен содержать 3 «small_l» в нем как

org_l=[[1,2,3],[1,2,3],[1,2,3]] #когда мы печатаем org_l

Когда я выполняю операцию со списком org_l и печатаю список как

org_l[0][1]=5

печать (org_l)

Ожидаемый результат: [[1,5,3],[1,2,3],[1,2,3]]

Исходный результат: [[1,5,3],[1,5,3],[1,5,3]]

ПОЧЕМУ??

История, стоящая за этим, заключается в том, что small_l неглубоко скопирован в список org_l 3 раза, что это за SHALLOW COPY?

«Поверхностная копия объекта — это копия, свойства которой имеют те же ссылки (указывают на те же базовые значения), что и исходный объект, из которого была сделана копия»

Здесь мы видим, что каждый индекс org_l указывает на один и тот же список, поэтому, когда мы изменяем наш список и когда мы печатаем org_l, тогда, когда каждый индекс org_l указывает на один и тот же список, печатается один и тот же измененный список :(

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

КАК??

Чтобы решить эту проблему, нам нужно глубоко скопировать «small_l» в «org_l». Что такое ГЛУБОКОЕ КОПИРОВАНИЕ?

«Глубокая копия объекта — это копия, свойства которой не имеют тех же ссылок (указывающих на те же базовые значения), что и исходный объект, из которого была сделана копия».

Для каждого экземпляра списка мы делаем копию и назначаем индекс, поэтому каждый индекс имеет соответствующие изменения списка, которые будут происходить в соответствующем списке, а не во всем списке. Это может быть достигнуто в python как

импортировать копию

для я в диапазоне (4):

org_l.append(copy.deepcopy(small_l))

теперь мы можем выполнить любую операцию и распечатать список как

org_l[0][1]=5

печать (org_l)

ВЫВОД: [[1,5,3],[1,2,3],[1,2,3]]

СПАСИБО :):)