我创建了一个包含三个名为l的元素的列表,然后将列表的所有内容复制到列表y中。但是当我在内存中打印它们的地址时,我不明白为什么这不是同一个地址。为什么y不是l的引用,如果我希望y将是l的引用,那么它们将具有相同的地址。我怎么能这样做?
这是我的代码
l = [8,12,3]
y = l[:]
print l
print y
print id(l)
print id(y)
在screeen上显示:
[8, 12, 3]
[8, 12, 3]
40894592
40837072
答案 0 :(得分:2)
[:]
将l
的内容复制到新列表y
,因此他们需要位于不同的地址。要使y
成为l
的引用,只需编写
y = l
答案 1 :(得分:0)
因为列表的一部分会创建一个新列表。 id返回每个列表的地址。
答案 2 :(得分:0)
好的一点是,如果你写这个陈述
l = [8,12,3],
Python创建一个从对象l
到列表[8, 12, 3]
的指针。
如果您发表此声明
y = l,
然后,对象y
指向l
,如果您更改l
,y
也会更改。
如果你写
y = list(l),
对象y
指向新列表。然后,如果您修改l
,y
中的值将保持不变。