list - Python中列表和元组(减去不变性)之间的区别?

标签 list python-3.x tuples

我已经知道 Python 中列表和元组之间的主要区别在于列表是可变的,而元组不是。除了这些以及它们可用的不同方法之外,我对列表和元组知之甚少。它们之间还有其他区别吗?在 Python 3 中使用元组而不是列表有什么优点/缺点(除了不变性)?一个是否比另一个具有更快的访问时间,或者具有更小的内存大小,或者包含更多的方法?它们的内部结构有什么不同吗?或者元组只是一个不可变的列表,仅此而已?

最佳答案

列表和元组都在内部实现为元素对象的引用数组。这样,两者都可以被索引,并且每个元素都需要相同数量的内存。在内部,它们都是同质的(无类型引用)。从逻辑上讲,它们都是异构的(自动取消引用,类型绑定(bind)到目标对象)。

列表可以修改,所以内部数组是动态数组。元组不能被修改,所以它在内部只是固定大小的数组。从这个角度来看,元组更简单。

对于哪个更快或不更快,您可以使用 timeit 模块测量具体情况。

您应该知道元组仅在数量和存储引用的值方面是不可变的。如果(比如说)一个列表被用作元组元素之一,则可以更改列表内容。这样,从逻辑上讲,元组内容不是恒定的(这样的元组是不可散列的)。

为此目的使用任何更好的类型。没有严格的偏好。这取决于实际情况。

关于list - Python中列表和元组(减去不变性)之间的区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9969649/

相关文章:

security - 使用 pathlib 检查子文件夹的安全方法

c++ - 为什么 ADL 不能使用 std::get 解析为正确的函数

python - 在 python 中,我应该如何在元组列表上实现最小堆?

带有嵌套列表创建的 Python CSV 导入

c++ - std::list.erase(itor) 在 Android 和 Win32 之间有区别

c# - 将 2 List<string> 与 LIKE 子句进行比较

python - Python 中一个元组中的所有项目

twitter-bootstrap - 列表组的 Bootstrap 水平堆叠

mysql - 如何将存储在 MySQL 单元中的代码输入到我的 Python beautifulsoup 中

python - 如何在某些索引处反转和连接字符串?