Tuple(元组)是什么数据结构

Tuple(元组)是什么?

元组(Tuple)是一种数据结构,它是一个不可变的有序元素序列。由于元组是不可变的,因此,无法修改它们的值。

一般来说,元组比数组或列表占用更少的内存空间。

元组允许像数组一样进行切片和索引,但没有删除或更改任何元素的方法。

元组一般通过在括号内利用逗号分隔元素。与数组类似,它们是序列。元组与数组的主要区别在于一旦分配了元组,就无法更改它,而数组可以。元组有时使用方括号或尖括号表示。

大多数类型化的函数式编程语言(如Lisp、Python和Linda)使用元组作为乘积类型。元组作为数据类型的用途包括将一系列参数从一个程序传递到另一个程序,并在关系数据库中表示一组值属性。在某些语言中,元组可以嵌套在括号或方括号中的其他元组中。

一些编程语言提供了称为记录类型的元组替代方案,其特点是通过标签访问无序元素。像 Haskell 这样的语言将元组乘积类型和无序记录类型组合成一个单一的结构。

Example

python

python 复制代码
# creating a tuple 
mySiblings = ('Susan', 'James', 'Bryan')

# accessing an element within a tuple:

mySiblings[2]

数学中的Tuple

在数学中,元组是一个有序的值序列。这些值可以重复,但数量总是有限的。以下元组使用括号,并包含四个值,其中一个值重复。

scss 复制代码
(6, 12, 6, 4)

因为元组包含四个值,所以有时被称为 4 元组或四元组。元组通常根据包含的值的数量以这些特定的名称来称呼,特别是那些包含较少值的元组。例如,包含一到六个值的元组可能分别被称为:

1元组或单子。 2元组或对。 3元组或三元组。 4元组或四元组。 5元组或五元组。 6元组或六元组。

这些并不是唯一给包含一到六个值的元组的名称。此外,通常还会给包含超过六个值的元组命名。元组也可以被称为n元组,其中n是元组内可能的值的数量。n元组可以用以下表达式表示。

scss 复制代码
(x1, ..., xn)

元组被认为是有序的,因为该顺序唯一地定义了元组,就比较它与其他元组而言。例如,以下表达式只有在a1等于b1a2等于b2a3等于b3等时才为真。

scss 复制代码
(a1, a2, a3, ..., an) = (b1, b2, b3, ..., bn)

如果根据指定的顺序,各个值不相等,则该表达式为假。如果a1等于b2a2等于b1,但a1不等于b1a2不等于b2,则该表达式为假。

元组可以一起使用,作为更大计算的一部分。如以下方程式简单示例,将两个4元组相加。

scss 复制代码
  (3, 1, 17, 7)
+ (6, 12, 6, 4)
  
= (3 + 6, 1 + 12, 17 + 6, 7 + 4)
  
= (9, 13, 23, 11)

值根据在元组中的位置相加,每个位置一起计算,但独立于其他位置的值。

第一个元组中的第一个值是3,第二个元组中的第一个值是6。将它们相加,总和为9,这成为计算返回的元组中的第一个值。对元组内的每个位置都重复相同的过程。

在数学中,元组也可以以列格式而不是单行元素表示。当使用列格式时,值用括号包围,不用逗号,如下例所示。

列格式元组的示例。 以这种格式的元组也可以相加,采取与前面示例类似的方法。

列格式元组相加的示例。 值根据在元组内的位置相加。因为每个元组有四个值,所以方程式返回一个包含每个位置总和的4元组。

元组在数学中有多种用途。例如,它们可能用于跟踪一系列值,例如1到100之间的所有素数。它们也可能用于二维和三维空间中的向量,或者在涉及集合和函数的计算中。

在计算机编程领域

元组(tuple)是一种常见的数据结构,许多编程语言都支持元组,包括 Python、Swift、C# 和 Rust 。而像Java这样的语言虽然不直接支持元组,但可以通过引入特定的库来实现。每种语言对元组的定义和访问方式都有所不同。

以 Python 为例,它是一种面向对象的语言,创建元组非常简单。下面是一个创建元组的示例:

python 复制代码
tuple1 = ('book', 47.932, 1872, 'elevate', 0)

在这个例子中,tuple1是一个包含五个不同类型元素的元组。元组可以通过整体或单个元素的方式进行访问。例如,使用print(tuple1)可以打印出元组中的所有元素,而print(tuple1[0])则可以访问元组的第一个元素。

Python 还支持元组的索引和切片操作,如print(tuple1[1:3])将返回元组中的第二个和第三个元素。此外,Python提供了如len函数来获取元组的长度,以及tuple函数来显式创建元组:

python 复制代码
tuple2 = tuple(0.11, 88, 'test', 'test', -477.62)

在Python中,创建空元组只需使用空括号:

python 复制代码
tuple3 = ()

如果元组中只有一个元素,需要在该元素后面加上逗号,以区分它是一个元组而非字符串:

python 复制代码
tuple4 = ('single',)

Python还允许在元组中嵌套元组或其他数据结构,如下所示:

python 复制代码
tuple5 = ('carry', 192, (-89.73773, 18, 'distinct'))

尽管 Python 是实现元组的一个例子,但不同语言中元组的规则和特性可能会有所不同。例如,在 C# 中,可以使用Tuple类的构造函数或Create方法来创建元组,而 Swift 则提供了命名元组内元素的能力。

每种语言都有其特定的语法和功能来处理元组。

相关推荐
如若12325 分钟前
对文件内的文件名生成目录,方便查阅
java·前端·python
滚雪球~1 小时前
npm error code ETIMEDOUT
前端·npm·node.js
沙漏无语1 小时前
npm : 无法加载文件 D:\Nodejs\node_global\npm.ps1,因为在此系统上禁止运行脚本
前端·npm·node.js
supermapsupport1 小时前
iClient3D for Cesium在Vue中快速实现场景卷帘
前端·vue.js·3d·cesium·supermap
brrdg_sefg1 小时前
WEB 漏洞 - 文件包含漏洞深度解析
前端·网络·安全
胡西风_foxww1 小时前
【es6复习笔记】rest参数(7)
前端·笔记·es6·参数·rest
m0_748254881 小时前
vue+elementui实现下拉表格多选+搜索+分页+回显+全选2.0
前端·vue.js·elementui
ThisIsClark2 小时前
【后端面试总结】深入解析进程和线程的区别
java·jvm·面试
星就前端叭2 小时前
【开源】一款基于Vue3 + WebRTC + Node + SRS + FFmpeg搭建的直播间项目
前端·后端·开源·webrtc
m0_748234522 小时前
前端Vue3字体优化三部曲(webFont、font-spider、spa-font-spider-webpack-plugin)
前端·webpack·node.js