Python:元组和列表之间的差异和相似之处

标签 python list tuples

Possible Duplicate:
What's the difference between list and tuples in Python?

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

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

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

所以 - 功能相同,语法略有不同,主要区别在于可变性。是对的吗?还是我错过了什么?

最佳答案

列表和元组之间的传统区别是,元组用于固定长度的异构数据,而列表则针对可变长度的同质数据。

近年来,这种区别已经有所放松。例如,元组具有仅对同类数据有意义的 count()index() 方法,以及 isinstance(tuple, collections.Sequence)True

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

关于Python:元组和列表之间的差异和相似之处,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9351855/

相关文章:

java - 如何迭代比java中列表指定的大小更多的次数

python - 中序二叉树遍历(使用Python)

python - 按 Python 中元组的第一个元素自然地对字母数字元组列表进行排序

struct - 我可以将元组结构枚举变体转换为常规元组而不是解构和重新创建元组吗?

python - 按组求和,保留 NA

python - 重复时仅显示 1 个元素

Python 强制 dict 条目为 utf-8

scala - 如何在 Scala 中使用优先队列?

python - django python 中的 Search_fields

python - Setup.py:如何添加外部安装候选项?