这就是我的意思:
x = [1, 2, 3]
y = x
y = y + [4]
据我所知,变量y
指向变量x
,它存储列表对象[1,2,3]。在第二行代码中,x
和y
都存储相同的id。在最后一行代码中,我们正在改变变量y
存储的内容。将列表[4]
添加到y会创建一个包含4的int对象的新列表对象吗?我很确定x
和y
仍然指向相同的id,因为列表是可变的,我只需要确认[4]。是否创建了新列表和int对象?
表达式y + [4]
创建了一个新列表,该列表是将[4]
添加到y
包含的任何内容的结果。将该表达式的结果分配给y
会将y
更改为指向已创建的新列表。
这与以下代码没有什么不同:
y = 1
y = y + 1
在此代码之后,y
将是2
,并且1
的含义没有改变。
没关系,我明白了!我做错了,在第三行为y
创建了一个新对象!它是列表[1,2,3,4]。变量x仍指list
[1,2,3]。添加[4]类似于python中的.extend()函数,其中将为4创建新的int对象,但不包含新的列表对象以包含该int!