python中的内存分配

2024-09-25 08:41:17 发布

您现在位置:Python中文网/ 问答频道 /正文

我创建了一个包含三个名为l的元素的列表,然后我将列表的所有内容复制到列表y中。但是当我在内存中打印它们的地址时,我不明白为什么这不是同一个地址。为什么y不是l的参照物,如果我想的话,y将是l的参照物,这样他们就有了相同的地址。我该怎么做?你知道吗

这是我的密码

l = [8,12,3]
y = l[:]

print l
print y

print id(l)
print id(y)

在屏幕上显示:

[8, 12, 3]
[8, 12, 3]
40894592 
40837072

Tags: 内存id元素密码内容列表屏幕地址
3条回答

因为列表的一部分创建了一个新的列表。id返回每个列表的地址。你知道吗

[:]l的内容复制到一个新列表y,因此它们需要位于不同的地址。要使y成为l的引用,只需编写

y = l

一个很好的观点是如果你写这个声明

l = [8,12,3],

Python创建从对象l到列表[8, 12, 3]的指针。你知道吗

万一你说了这句话

y = l,

然后对象y指向l,如果更改ly也将更改。你知道吗

以防你写信

y = list(l),

对象y指向一个新列表。如果修改ly中的值保持不变。你知道吗

相关问题 更多 >