哪个对象占用更多内存空间以及为什么:[1]或[1,1]?

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

假设我在Python中有两个列表:

a = [1]
b = [1,1]
(语言无关,列表中的对象也无关)。

我的问题是:哪一个占用了更多的内存空间,为什么?出现这个问题是因为,据我所知,两个列表都包含具有相同内存地址的对象:

id(b[0]) == id(b[1]) # True
。那么,这种大小差异会出现在哪里呢?

我之前问过类似的问题,但它的表述很笨拙,我没有得到预期的答案。

memory memory-management reference copy
1个回答
0
投票

包含 2 个元素的列表会占用更多空间,因为您需要存储两个值而不是只存储一个值。然而,在您的示例中,“b[0]”和“b[1]”的 id 是相同的,因为值相同,因此 python 不会单独存储它们。如果你尝试使用不同的数字,你会得到不同的 id。

示例:

b = [1,2]
print(id(b[0]))
print(id(b[1]))

输出:

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