为什么元组和列表?

未匹配的标注

这似乎是当向初学者教授元组时总是会被提及的第一个问题:如果我们有了列表,为什么还需要元组?一部分原因是历史造成的;Python之父是一个训练有素的数学家,且他被引用为“将元组视为对象的简单关联,列表视作随时间而改变的数据结构”。事实上,单词“tuple”的使用源自数学,也来自它经常用于(代表)关系式数据库表格的行。

然而,最好的回答似乎是元组的不变性提供了某种完整性——可以确定元组不会通过程序其他地方的另一个引用而被改变,但列表却没有这种保证。因此,元组和其它不可变对象,起到和其它语言中的“constant”声明类似的作用,虽然Python中常量的概念和对象相关,而非变量。

元组还能被用在列表不能被使用的地方——比如,作为字典键(参见第8章的稀疏矩阵例子)。一些内置操作也可能需要或暗示元组而非列表(比如:在字符串格式表达式中的替换值),

person = ('Alice', 25, 1.65)

# Using a tuple to store the substitution values
message = 'My name is {}, I am {} years old, and my height is {} meters.'.format(*person)

print(message)

然而这些操作在最近几年通常已经被推广而更加灵活。作为一个经验法则,列表是可能需要改变的有序集合的首选工具;元组则可以处理固定关联的其它情况。

本文章首发在 LearnKu.com 网站上。

上一篇 下一篇
讨论数量: 0
发起讨论 只看当前版本


暂无话题~