原因是因为在Python中,变量本身并不存储值,而是存储一个指向内存中存储值的地址。当进行赋值操作时,实际上是将新值赋给了新的地址,而不是更新原地址中的值。
例如,在上图中,当执行lss = ls
时,实际上并没有将ls
中的值复制给lss
,而是将lss
指向了与ls
相同的地址。因此,当ls
变化时,lss
指向的地址中的值也会改变,而ls
本身没有改变。
而在下图中,lss
的赋值操作是将新值赋给了一个新的地址。因此,当ls
改变时,并不会影响lss
所指向的地址中的值。这也是为什么输出lss
的结果不会改变的原因。
示例代码:
ls = [1, 2, 3]
lss = ls
print(lss) # 输出: [1, 2, 3]
ls.append(4)
print(lss) # 输出: [1, 2, 3, 4]
lss = [5, 6, 7]
print(ls) # 输出: [1, 2, 3, 4]
print(lss) # 输出: [5, 6, 7]
在上面的代码中,我们首先将ls
赋值给lss
,然后改变了ls
的值,并输出了lss
。可以看到,lss
的值也跟着改变了。接着,我们再将lss
赋值为一个新的列表,然后分别输出ls
和lss
的值。可以看到,ls
的值并没有受到影响,而lss
的值改变为了新的列表。