#python
#python
Вопрос:
a=[-5,29,45,[67,54]]
b=list(a)
a[3][0]=88
a[1]=34
print("b = ",b)
print("a = ",a)
Когда я запускаю этот код на python, я получаю вывод как b = [-5, 29, 45, [88, 54]]
и a = [-5,34,45,[88,54]]
.
Как происходит этот вывод, я имею в виду, как a[3][0]=88
он также изменяется, в b
то a[1]=34
время как нет?
Комментарии:
1. для обоих a и b ссылаются на один и тот же адрес. Вы можете проверить id (a) и id (b), оба адреса будут одинаковыми.
2. b = list(a) создает неглубокую (не глубокую) копию. Посмотрите на разницу между мелкой и глубокой копией.
Ответ №1:
Ответ довольно прост: вы должны создать список из списка (a), чтобы создать совершенно новый массив. Однако список внутри списка одинаков как для a, так и для b.
Вы можете проверить это, напечатав id (a), id (b), id(a[-1]) и id(b[-1)
a=[-5,29,45,[67,54]]
b=list(a)
a[3][0]=88
a[1]=34
print("b = ",b)
print(“a = “,a)
print(“address of a”,id(a))
print(“address of b”,id(b))
print(“address of a[-1]”, id(a[-1])
print(“address of b[-1]”, id(b[-1])