python – 列表和元组之间有什么区别?

有什么不同?

元组/列表的优点/缺点是什么?

解决方法:

除了元组是不可变的之外,还有一个语义上的区别应该指导它们的使用.元组是异构数据结构(即,它们的条目具有不同的含义),而列表是同构序列.元组有结构,列表有顺序.

使用这种区别使代码更加明确和易懂.

一个例子是页面和行号对引用书中的位置,例如:

my_location = (42, 11)  # page number, line number

然后,您可以将其用作字典中的键来存储位置注释.另一方面,列表可用于存储多个位置.当然,人们可能希望在列表中添加或删除位置,因此列表是可变的是有意义的.另一方面,在现有位置添加或删除项目没有意义 – 因此元组是不可变的.

在某些情况下,您可能希望更改现有位置元组中的项目,例如在遍历页面行时.但元组不变性迫使您为每个新值创建一个新的位置元组.这看起来很不方便,但使用这样的不可变数据是价值类型和函数式编程技术的基石,它们具有很大的优势.

关于这个问题有一些有趣的文章,例如“Python Tuples are Not Just Constant Lists”“Understanding tuples vs. lists in Python”.官方Python文档also mentions this

“Tuples are immutable, and usually contain an heterogeneous sequence …”.

在像Haskell这样的静态类型语言中,元组中的值通常具有不同的类型,并且元组的长度必须是固定的.在列表中,值都具有相同的类型,并且长度不固定.所以差异非常明显.

最后是Python中的namedtuple,这是有道理的,因为元组已经被认为具有结构.这强调了元组是类和实例的轻量级替代品的想法.

上一篇:python – 使用csv文件从元组到整数


下一篇:python – List vs tuple,何时使用?