将未分配给变量的列表添加到指向不同列表的另一个变量是否会创建新的列表对象?

问题描述 投票:0回答:2

这就是我的意思:

x = [1, 2, 3]
y = x
y = y + [4]

据我所知,变量y指向变量x,它存储列表对象[1,2,3]。在第二行代码中,xy都存储相同的id。在最后一行代码中,我们正在改变变量y存储的内容。将列表[4]添加到y会创建一个包含4的int对象的新列表对象吗?我很确定xy仍然指向相同的id,因为列表是可变的,我只需要确认[4]。是否创建了新列表和int对象?

python list memory mutable id
2个回答
0
投票

表达式y + [4]创建了一个新列表,该列表是将[4]添加到y包含的任何内容的结果。将该表达式的结果分配给y会将y更改为指向已创建的新列表。

这与以下代码没有什么不同:

y = 1
y = y + 1

在此代码之后,y将是2,并且1的含义没有改变。


0
投票

没关系,我明白了!我做错了,在第三行为y创建了一个新对象!它是列表[1,2,3,4]。变量x仍指list [1,2,3]。添加[4]类似于python中的.extend()函数,其中将为4创建新的int对象,但不包含新的列表对象以包含该int!

© www.soinside.com 2019 - 2024. All rights reserved.