【发布时间】:2015-02-18 00:34:18
【问题描述】:
我刚刚运行了这些代码:
v = [1,2,'kite',100**100]
for x,y in enumerate(v):
print ("{} size is: {}".format(y,sys.getsizeof(v[x])))
print ("Total size is: {} ".format(sys.getsizeof(v)))
输出:
1 size is: 14
2 size is: 14
kite size is: 29
100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 size is: 102
Total size is: 52
>>>
v的最后一个元素大小是102,总大小是52?同样即使没有最后一个元素,列表的前 3 个元素的总和仍然大于总大小,我的问题是为什么? Python 在列表中执行 zip 处理?
另一个奇怪的是,在这个输出之间;
v = [""]
for x,y in enumerate(v):
print ("{} size is: {}".format(y,sys.getsizeof(v[x])))
print ("Total size is: {} ".format(sys.getsizeof(v)))
v=[" "]
for x,y in enumerate(v):
print ("{} size is: {}".format(y,sys.getsizeof(v[x])))
print ("Total size is: {} ".format(sys.getsizeof(v)))
输出:
>>>
size is: 27
Total size is: 40
size is: 26
Total size is: 40
>>>
真的很奇怪,谁能解释一下是怎么回事?
【问题讨论】:
-
其他人刚刚问了同样的问题:stackoverflow.com/questions/27559730/…
标签: python list python-3.x size sys