想象每个元素都是一个变量:
x = [a,b,c,d] # 1,3,6,[18]
你把它复制为y 所以你有
y = [a,b,c,d] # 1,3,6,[18]
当您执行x[3][0] = 15 时,您正在更改d 的第一个元素。请注意 d 仍然是变量 d,您更改了它的内容,但在两个列表中它仍然是相同的 d。
现在你改变x的第二个元素
x = [a,e,c,d] # 1,12,6,[15]
但y 仍然是
y = [a,b,c,d] # 1,3,6,[15]
编辑:添加一个非代码示例以使其更清晰
假设x 是一个列表:
- 一篇写着
1的论文
- 一篇写着
3的论文
- 一篇写着
look at that notebook over there, whatever's in there is my value的论文
当您将x 复制为y 时,您有:
- 一篇写有
1 的论文(副本)
- 一篇写着
3 的论文(副本)
- 一篇写着
look at that notebook over there, whatever's in there is my value 的论文(这是一份副本,但都引用了同一个笔记本)
当您执行 x[2][0] = 1 时,您走到笔记本所在的位置并更改内容,x 和 y 仍然告诉您转到同一个笔记本以了解其中的内容,您没有更改第三卷,你按照它的指示修改了笔记本的内容
当您执行x[1] = 6 时,您正在使用写有6 的新论文更改x 的第二个元素,但您没有更改y 中的那个,因为它是不同的论文(副本原版)