python中的内存分配

时间:2016-09-13 11:01:30

标签: python memory

我创建了一个包含三个名为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

3 个答案:

答案 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,如果您更改ly也会更改。

如果你写

y = list(l),

对象y指向新列表。然后,如果您修改ly中的值将保持不变。

相关问题