Не удается понять, почему этот код выдает этот результат

#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])