Python中Tuple的词源有趣探索

提出一个智商欠费的问题

Tuple在Python中表示一种“大小固定的有序序列”。这是一条普世真理,毋庸置疑。

为什么这个数据结构叫Tuple,而不是其他任何一个名字呢?
我停下了在键盘上舞蹈的手指,被大脑抛出的这个疑问打蒙了。是啊,为什么呢?
这好比在问,为什么这个模样的东西叫狗呢? 输入图片说明

Tuple这个单词怎么来的

先来看一组英文单词:

    monuple     (1倍,也称为single)   
    couple     (2倍,也称作double)
    triple      (3倍)
    quadruple  (4倍)
    quintuple   (5倍)
    sextuple    (6倍)
    .........
    centuple   (100倍)  

这些表示倍数的单词都有一个共同的后缀-ple-ple来源于古拉丁文plus(更多的意思)。这些单词的前缀呢,有规律可循吗?它们本身就是规律,前缀是拉丁文的数字1234一直到100。
拉丁文的123456如下:

     unus    1
     duo      2
     tres     3
     quattuor 4
     quinque  5
     sex      6

后来,人们从这些单词里提取出一个更长的-tuple后缀,作为一个通用词根。

-tuple
1863, word-forming element abstracted from quintuple, etc.

Tuple什么时候有了有序序列的含义 ?

大约1950s,数学中出现了一个概念有序数对,表示为2-tuple。 中文翻译自它的另外一个更常用的名字 ordered pair。

这是初中数学知识,“有序数对”是指有顺序的两个数a和b组成的数对,数学符号记作(a,b)。所谓有序,是指一个2-tuple的元素顺序是固定的,例如(a,b)和(b,a)是不同的有序数对。有序数对可以准确的表示平面上的一点,也就是坐标点喽(x,y)。
3个有序数列怎么表示呢,可以嵌套表示,如(1,(2,3)),也可以直接写成(1,2,3)。 扩展到一般情况,n个有序数列,就被表示为n-tuple(n是正整数)。 把有序的元素写在“()”内,再用逗号分隔;例如(2,7,4,1,7)就表示一个5-tuple。
至此,数学概念中tuple就诞生了。
Ngram Viewer显示的1920年至今,词汇n-tuple和ordered pair 在英文出版书籍中的出现频率

Tuple作为一种数据结构进入计算机科学

计算机语言出现后,Tuple作为一种数据结构被引入了计算机科学领域。
不止python,其他很多语言都有tuple结构,如Lisp,Scala,Swift等。在计算机语言中,Tuple的元素可以是任意数据类型,如int,string。
所以,Tuple的重要特性长度不可变和元素有序,是因为tuple作为一个数学概念,本来就是定义一个有限且有序的序列。

最后一个问题,为什么把tuple翻译成“元组”?

感觉这个翻译挺别扭的,从字面上不如数组、列表好理解。也没办法问第一个翻译者的想法。我的理解是“元组”只表达了最基本的2-Tuple(二元组)的意义。 “元”的意思是“基本,初始”,“元组”意思是“基本组成”或“基本单元”。数据库中,把表的一行也成为元组,但是表的基本单元是数据项啊,这,也勉强可以理解吧。

Tuple的特性本身也不复杂,不需要这样大费周折的去理解。写这篇文章只为了满足一个词源控的好奇心,就像我刚学Java时很想知道为什么<key,value>叫Map?为什么[1,1,2,3,5,8]叫Array。

参考内容: Tuple Ordered_pair

转载于:https://my.oschina.net/gooke/blog/1575331

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值