我已经知道一段时间了,Python中的列表和元组之间的主要区别是列表是可变的,元组不是。除了这些以及可用的不同方法之外,我对列表和元组知之甚少。他们之间有没有其他区别?有没有任何优点/缺点(除了不可变性)在Python 3的列表中使用元组?是否有一个比另一个有更快的访问时间,或者有更小的内存大小,还是包含更多的方法?他们的内部结构有什么不同?或者是一个元组只是一个不可变的列表,仅此而已?在Python中列表和元组之间的区别(减去不变性)?
7
A
回答
7
列表和元组都在内部实现为元素对象的引用数组。这样,两者都可以被索引,并且每个元素都需要相同数量的内存。在内部,它们都是同质的(无类型的引用)。从逻辑上讲,它们都是异构的(自动解引用,类型绑定到目标对象)。
该列表可以修改,所以内部数组是一个动态数组。元组不能修改,所以它在内部只是固定大小的数组。从这个角度来看,元组更简单。
对于哪个更快或更快,您可以使用timeit模块来测量具体情况。
你应该知道这样一个事实,即元组只有关于存储引用的数量和值才是不可变的。如果(比如说)列表被用作元组元素之一,则列表内容可以被改变。这样,在逻辑上,元组内容不是常量(这种元组不可哈希)。
使用任何类型更好的目的。没有严格的偏好。这取决于实际情况。
4
在它们两个上运行dir - 非常不同的方法列表(pop演示如下)。元组可能会更快
>>> alist = [1,2,3]
>>> atuple = (1,2,3)
>>> alist.pop()
3
>>> atuple.pop()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'tuple' object has no attribute 'pop'
“追加”,“计数”,“扩展”,“索引”,“插入”,“流行音乐”,“删除”,“反向”,“那种”全部供列表,而不是元组 - 这是有道理的,考虑到不变性的想法。
在哲学上,有些人期望列表是同质的,并没有对元组的期望。
相关问题
- 1. 在python中返回一个列表和一个元组之间的区别
- 2. Python中列表之间的区别
- 3. 在Python中的列表,序列和切片之间的区别?
- 4. 在Python中列表和列表[:]之间有什么区别?
- 5. python中的实例变量和属性之间的区别?
- 6. 列表分配和元组赋值之间的区别?
- 7. NodeJS和Python散列之间的区别
- 8. Python - 减去元组列表中的元素
- 9. 列表和序列之间的区别
- 10. java中cast阵列列表和cast数组之间的区别
- 11. 数组列表和列表之间的区别
- 12. Python:!=和“不是”之间的区别
- 13. Python中的Bytearray和列表之间的区别
- 14. Kotlin中的列表和数组类型之间的区别
- 15. 中间件阵列和组合中间件之间的区别?
- 16. 减去和划分Python中的列表中的所有元素
- 17. python中的[]和[,,]之间的区别
- 18. 减去两个元组的列表
- 19. Julia的nx1阵列和n元素数组之间的区别
- 20. 从Python中的元组中减去元组的元组?
- 21. Python中cStringIO.StringIO.write和String.StringIO.write之间的区别
- 22. Python中dir()和locals()之间的区别?
- 23. 临时表和表变量之间的区别在SQL 2005中
- 24. 在C#和Java中的易变性之间有什么区别?
- 25. **变量和变量[] []之间的区别?
- 26. Python:在数组中减去
- 27. 在Python中,列表理解与列表和元组有什么区别?
- 28. 列表和元组有区别吗?
- 29. 数组和包装列表之间的区别?
- 30. Python - 在列表中减去值
可能的重复[有什么区别列表和元组?](http://stackoverflow.com/questions/626759/whats-the-difference-between-list-and-tuples) – 2015-08-07 05:39:58