gpt4 book ai didi

python - 为什么即使具有相同的值,Python 也会为列表、元组、字典分配新的 id?

转载 作者:行者123 更新时间:2023-11-28 20:40:36 25 4
gpt4 key购买 nike

x1 = 5
y1 = 5
x2 = 'Hello'
y2 = 'Hello'
x3 = [1,2,3]
y3 = [1,2,3]
print(x1 is y1)
print(x2 is y2)
print(x3 is y3)

输出

True
True
False

为什么 Python 为 y3 分配了一个不同于 x3 的 id?

这里的 x3y3 是列表,但是 Python 也对元组和字典做同样的事情。我还想知道 Python 还有哪些地方具有将新 ID 分配给具有相同值的变量的相同行为,为什么会这样?

最佳答案

否则会发生这种情况:

x3 = [1,2,3]
y3 = [1,2,3]

x3[0] = "foo"
x3[0] == y3[0] # Does NOT happen!

事实上,

x3[0] != y3[0]

这是一件好事™。如果 x3y3 相同,则改变一个也会改变另一个。这通常不是预期的。

另见 when does Python allocate new memory for identical strings?为什么字符串的行为不同。

此外,如果您想比较,请使用==

关于python - 为什么即使具有相同的值,Python 也会为列表、元组、字典分配新的 id?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35477813/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com