Найти - Пользователи
Полная версия: Копирование 2d списков
Начало » Python для новичков » Копирование 2d списков
1
WildEspanica
a = [[0, 1],
[2, 3],
[4, 5]]
b = a
b[0][0] = 6
print(a)
>> [[6, 1], [2, 3], [4, 5]]
Копирую исходный заданный список, видоизменяю копию в процессе, но изменения так же затрагивают изначальный список. Почему это происходит и как этого избежать?
FishHook
WildEspanica
видоизменяю копию в процессе
Кто вам сказал, что это копия? Почитайте учебник, раздел изменяемые и неизменяемые объекты

https://informatics.mccme.ru/mod/page/view.php?id=37581
WildEspanica
FishHook
Почитайте учебник
Прочитал. Понял что переменные - это просто ссылки на объекты, в моём случае это один объект. Но способ предложенный там всё-равно не работает


WildEspanica
FishHook
Почитайте учебник
Всё, я догадался, спасибо за ссылку.
a =[[0,1],[2,3]]
b = []
for i in range(len(a)):
b += [a[i].copy()]
b[0][0] = 7
py.user.next
  
>>> a = [[0, 1],
...      [2, 3],
...      [4, 5]]
>>> 
>>> b = [i[:] for i in a]
>>> b
[[0, 1], [2, 3], [4, 5]]
>>> 
>>> b[0][0] = 10
>>> a
[[0, 1], [2, 3], [4, 5]]
>>> b
[[10, 1], [2, 3], [4, 5]]
>>>
AD0DE412
https://pythononline.ru/osnovy/modul-copy-python
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB