Задать вопрос

В python при присваивании одного массива другому они равны, как сделать чтобы они были не зависимыми?

>>> b = [1,2]
>>> a = b
>>> a[0]+=1
>>> print(a[0])
2
>>> print(b[0])
2
Это было для меня открытием. Как сделать сделать скопированный массив не зависимым?
  • Вопрос задан
  • 3762 просмотра
Подписаться 3 Оценить Комментировать
Решения вопроса 2
самое простое
a = b[:]
# или
a = b.copy()


но это не спасёт если список является частью самого себя:
b = [1, 2]
>>> b.append(b)
>>> b
[1, 2, [...]]
>>> id(b)
139920848119752
>>> id(b[2])
139920848119752
>>> a = b[:]
>>> a
[1, 2, [1, 2, [...]]]
>>> id(a)
139920848120456
>>> id(a[2])
139920848119752


а вот deepcopy уже справится с этим
from copy import deepcopy
>>> a = deepcopy(b)
>>> a
[1, 2, [...]]
>>> id(a)
139920847744840
>>> id(a[2])
139920847744840
Ответ написан
Olej
@Olej
инженер, программист, преподаватель
при присваивании одного массива другому они равны, как сделать чтобы они были не зависимыми?

нужно не присваивать ссылку, а клонировать объект.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы