为什么一个值改变了而第二个值没有改变?

RW *_*ang 2 python list python-3.x

a = [ 1, 2 ]
b = a
a.append(3)
print(b) # shows [ 1 2 3 ] which means b changed

c = 4
d = c
c = 8
print(d) # shows 4 which means d did not change
Run Code Online (Sandbox Code Playgroud)

为什么 b 变了,而 d 没有?.append 改变了 b 中存储的值,但 c = 8 并没有改变 d 中的值

Dee*_*ace 6

这两个例子并不等价。

通过这样做,b = a您是在告诉b指向指向的同一个列表a。如果您通过a它更改列表,即使通过b. 内存中只有一个列表。

在第二个示例中,您正在执行d = c它告诉d指向相同的整数c,但随后您告诉c指向另一个整数。d不知道它,它仍然指向以前指向的同一个整数c

使用列表到您的第二个示例的等效示例将是

a = [1, 2]
b = a
a = []
print(a)
# []
print(b)
# [1, 2]
Run Code Online (Sandbox Code Playgroud)

检查这些可视化:

你的第一个例子

你的第二个例子

我的例子