关于python:为什么要实现两个如此相似的数据结构,如list和tuple

Why implement two so similar data structures like List and Tuple

本问题已经有最佳答案,请猛点这里访问。

在python中,list数据结构是一个元素序列。同样,tuple也是元素序列,但是元组是immutable

为什么要建立这样一个类似的数据结构,它是唯一的特性,而不是列表,是因为它不能被改变?它是否可能通过不可变而节省内存空间?

另外,如果一个列表和一个元组包含完全相同的数据,它们会在内存中使用相同数量的空间吗?


不可变类型是可哈希的,可以用作字典键。这工作:

1
2
key = (1, 2, 3)
d = {key: 1}

但这并不是:

1
2
key = [1, 2, 3]
d = {key: 1}

如果是这样的话,你希望它能做什么?

1
2
3
4
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