python - 为什么将值附加到列表比列表文字占用更多的存储空间?
问题描述
我提供了 4 种不同的方法来用相同的值填充这些列表:
var = 'a'
print('var id: ', id(var)) # var id: 1561191205488
lst1 = [var]
lst2 = ['a']
lst3 = []
lst3.append(var)
lst4 = []
lst4.append('a')
print(lst1.__sizeof__(), id(lst1[0])) # 48 1561191205488
print(lst2.__sizeof__(), id(lst2[0])) # 48 1561191205488
print(lst3.__sizeof__(), id(lst3[0])) # 72 1561191205488
print(lst4.__sizeof__(), id(lst4[0])) # 72 1561191205488
print(lst1 == lst4 == lst3 == lst4) # True
我知道在 Python 中,所有内容都是通过引用传递的,在这些列表中,列表存储的实际值是对对象“a”的引用,它们都是相同的(正如我打印的 ID)。
我预计至少“lst2”和“lst4”以及“lst1”和“lst3”具有相同的内存使用量,但它们没有!似乎 append 方法所做的不仅仅是存储引用......
谁能告诉我这里发生了什么?
解决方案
推荐阅读
- android - 在android BaseAdapter中隐藏和显示视图单击以解决listview问题
- angular - 如何测试补丁请求?
- android - 如何集成mailjet?
- angular - 如何在 nativescript Angular 中设置默认起始页
- ios - 如何在 iOS App 中授权 whatsapp?
- python - 值列表的运行函数
- python-3.x - 从 NOAA 下载数据的 python 脚本
- c# - 从 DropDownList 中抓取所选项目
- python - Jupyter 笔记本的 R 内核
- typescript - Typescript中对类的构造函数的类型引用?