在python中,list
数据结构是一系列元素。类似地,atuple
也是一个元素序列,然而,元组是immutable
。
制作如此相似的数据结构的原因是什么,与列表相反,唯一的功能是它不能更改?它是否可以通过不可变来节省内存空间?
此外,如果列表和元组包含完全相同的数据,它们会在内存中使用相同数量的空间吗?
在python中,list
数据结构是一系列元素。类似地,atuple
也是一个元素序列,然而,元组是immutable
。
制作如此相似的数据结构的原因是什么,与列表相反,唯一的功能是它不能更改?它是否可以通过不可变来节省内存空间?
此外,如果列表和元组包含完全相同的数据,它们会在内存中使用相同数量的空间吗?
不可变类型是可散列的,可以用作字典键。这有效:
key = (1, 2, 3)
d = {key: 1}
但这不会:
key = [1, 2, 3]
d = {key: 1}
如果是这样,你希望这会做什么?
key[0] = 2
print d[key] # id(key) hasn't changed, so surely the lookup should still work
print d[[1, 2, 3]] # but also, we stored a piece of data at [1, 2, 3], didn't we?
print d[[2, 2, 3]] # but if d[key] works, surely we can expand key to its value