Уведомления

Группа в Telegram: @pythonsu

#1 Ноя. 30, 2019 19:27:08

Demexis
Зарегистрирован: 2019-11-30
Сообщения: 1
Репутация: +  0  -
Профиль   Отправить e-mail  

Проблема с копированием массивов.

Не получается скопировать данные из одного массива в другой без привязки. В чём заключается проблема?

 old_list = [[1, 2, 3], [1,3,1], [1,2,7]]
new_list = list(old_list)
print(old_list is new_list)
old_list[1][2] = 98
new_list[2][1] = 75
print("\nOld list: " + str(old_list))
print("New list: " + str(new_list))


print(old_list is new_list) — выдаёт False

Присваивания, выполняемые для каждого отдельного списка — выполняются и в другом.

Отредактировано Demexis (Ноя. 30, 2019 23:33:55)

Прикреплённый файлы:
attachment ice_screenshot_20191130-185545.png (7,0 KБ)

Офлайн

#2 Ноя. 30, 2019 22:10:19

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  253  -
Профиль   Отправить e-mail  

Проблема с копированием массивов.

Все правильно работает. В питоне практически все данные ссылочные. см метод deepcopy



Офлайн

#3 Ноя. 30, 2019 23:30:07

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 10031
Репутация: +  857  -
Профиль   Отправить e-mail  

Проблема с копированием массивов.

Если уровень вложенности один, можно и через включение скопировать

  
>>> lst1 = [[1, 2, 3], [4, 5, 6]]
>>> 
>>> lst2 = [i[:] for i in lst1]
>>> 
>>> lst2[0][0] = 0
>>> lst1
[[1, 2, 3], [4, 5, 6]]
>>> lst2
[[0, 2, 3], [4, 5, 6]]
>>>



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version