可能重复:
What's the difference between list and tuples in Python?
我刚才有一个理论问题: 如果我说元组只是不可变列表,我怎么错(或者我不是?)?
我知道元组在某种程度上是不可变的:如果我有一个带有可变对象的元组(列表,python对象,等等) - 它在某种程度上是可变的,因为我可以改变该对象的值,但仍然 - 元组结构,它的元素指针保持不变,因此元组本身是不可变的。我知道,你不必解释这个。
据我所知,除了可变性之外,没有任何区别。对于这两种类型,operator +返回由操作数元素组成的适当结构,按顺序,+ =运算符工作得很好,两者都可以使用简单索引访问,或者使用切片,都响应len(),map()(这是一个有点棘手:map(foo,tuple)返回列表,而不是元组。我想我得到了这样一个行为的原因,但仍然值得一提),all(),any()等......
所以 - 相同的功能,稍微不同的语法,可变性的主要区别。是对的吗?或者我错过了什么?
答案 0 :(得分:1)
列表和元组之间的传统区别在于元组用于固定长度的异构数据,而列表则用于可变长度的同类数据。
近年来这种放弃已经放松。例如,元组获得的count()
和index()
方法仅对同类数据有意义,isinstance(tuple, collections.Sequence)
为True
。
所以在我看来,将元组视为不可变列表并不是太远了。不变性允许它们可以清洗,因此它们可以用作字典中的键和集合,因为所有项目都是可清洗的,但它们不能更改。
答案 1 :(得分:0)
基本上你是对的,但概念有点不同。
这里有一个很好的解释:http://news.e-scribe.com/397
此外,这里有一个类似的主题:python: list vs tuple, when to use each?