首页 文章

Python:元组和列表之间的差异和相似之处[重复]

提问于
浏览
1

可能重复:Python中的列表和元组之间有什么区别?

我有一个理论问题:如果我说元组只是不可变的列表,我怎么错(或者我不是?)?

我知道元组在某种程度上是不可变的:如果我有一个带有可变对象的元组(列表,python对象,等等) - 它在某种程度上是可变的,因为我可以改变该对象的值,但仍然是 - 元组结构,它的元素指针保持不变,所以元组本身是不可变的 . 我知道,你不必解释这个 .

据我所知,除了可变性之外 - 没有区别 . 对于这两种类型,运算符返回由操作数元素组成的适当结构,顺序,=运算符工作得很好,两者都可以使用简单索引访问,或者使用切片,都响应len(),map()(这有点棘手) :map(foo,tuple)返回列表,而不是元组 . 我想我得到了这样一个行为的原因,但仍然值得一提),all(),any()等...

所以 - 相同的功能,一点点不同的语法,可变性的主要区别 . 是对的吗?还是我错过了什么?

2 回答

  • 0

    列表和元组之间的传统区别在于元组用于固定长度的异构数据,而列表用于可变长度的同类数据 .

    近年来,这种放弃已经放松 . 例如,元组获得的 count()index() 方法仅对同类数据有意义, isinstance(tuple, collections.Sequence)True .

    因此,在我看来,将元组视为不可变列表并不是太远了 . 不变性允许它们可以清洗,因此它们可以用作字典中的键和集合,因为所有项目都是可清洗的,但是它们不能被更改 .

  • 1

    基本上你是对的,但概念有点不同 .

    这里有一个很好的解释:http://news.e-scribe.com/397

    此外,这里有一个类似的主题:python: list vs tuple, when to use each?

相关问题