См. Фрагмент кода ниже
a = [[1, 2], [3, 4], [5, 6]]
b = a[1]
id(a[1]) == id(b) # True
Это легко понять, поскольку адрес b
и адрес a[1]
совпадают. Поэтому, если я изменю элемент в a += 1
, элемент в b также изменится b == [4, 5]
.
Однако, если я изменил на массив numpy, дело обстоит иначе
c = numpy.array(a)
d = c[1]
id(c[1]) == id(d) # False
Однако, если я изменю элемент в c c +=1
, элементы в d
также изменятся (d изменится на array([4, 5]
)), я не понимаю двух вещей: 1. почему адрес d
а адрес c[1]
отличается? 2. если адрес другой, почему элементы изменились одновременно? Кто-нибудь мог объяснить? Спасибо