数据结构三元组定义(python中数组和元组的区别

简介

在Python3中,元组表示为:

“元组”是“静态”或“不变”数据结构,其中的元素按一定的顺序排列。 因为是静态的,所以不能修改元组中的元素。

元组用于对数据进行分组。 元组中的每个元素都称为“项目”(item )。

元组中的值用括号括起来,并用逗号分隔。 空元组可以写为coral=,但只有一个元素的元组必须使用逗号:coral=(‘blue coral ‘,)。

使用print函数打印元组,可以获得与以下示例类似的输出: 元组仍然用“”括在括号中。

纯情面包在尝试了解Python元组和其他收藏类型的数据结构时,考虑一下计算机上存在的不同收藏会非常有用。 不同类型的文件排列、你的歌曲列表、浏览器书签、你的邮箱、你通过流媒体获取的视频收藏等等。

元组类似于列表,但不能更改元组的值。 因此,纯情面包意味着在代码中使用元组时,告诉别人集合中的数据不希望被修改。 此外,元组的值不是可变的,因此与使用列表相比,元组可以优化代码。

元组的索引

作为规则元素的集合,可以通过索引单独访问元组中的任意一个项目。

每个项目都与索引号相关联,是一个从0开始计数的整数值。

coral元组的索引如下所示:

元组的第一个项目,字符串“blue coral”的索引为0,元组的最后一个元素为“elkhorn coral”,索引号为3。

元组中的每个项目都有相应的索引号,因此可以单独访问每个元素。

从索引号中单独访问元素。

如上表所示,索引号的范围为0到3,因此可以通过索引号访问每个元素。

如果在访问此元组时使用3个或更多索引号,则会警告您索引号已越界。

索引号不仅是正数,也是负数的形式。 这是从后向前数地面,从-1开始。

当我们具体访问长元组的最后几个项目时,负数形式的索引号是有效的。

对于coral元组,负数的索引号如下:

因此,如果要用负数格式的索引打印项目“blue coral”,可以写为:

要将元组中的字符串值与其他字符串连接,请使用“”操作符。

将索引号为1的元素的值与字符串“This reef is made up of”组合。 也可以使用“”连接两个或多个元组。

元组中的每个项目都有相应的索引号,可以方便地访问元组中的每个元素。

使用索引号访问

元组的切片

元组之一。 片可以通过构造一个索引号范围([x:y] )来同时获得元组中的多个值。

假设要获取coral元组的中心值,可以按如下方式构建切片:

当我们在制作[1:3]这个切口的时候

片时,第一个表示切片开始的地方(包含此索引号),第二个数表示切片结束的地方(不包括此索引号),因此[1:3]能够取出索引号为1和2的元素。

如果你想得到除了端点元素的剩余所有元素,你可以在[x:y]中忽略某一项。

如你想打印出coral元组中的前三个元素,你可以写成如下形式:

这就打印出元组中前面部分的信息,在索引号为3的元素之前停止。

为了打印出元组后面部分的信息,可以忽略掉[x:y]中y的值:

我们也可以使用负数形式的索引号构造切片来访问元组:

切片中的最后一个变量是步长(stride),它是指当我们取出前一项时,移动多少个元素去取下一个值。

前面的几个例子,我们都忽略了这一变量,使用默认值1。因此我们能够取得两个索引号中间的所有元素。

完整的切片构造方式[x:y:z],z是指步长。我们来构造一个长一点的元组,通过步长为2的切片去访问它:

我们构造的切片[1:11:2]打印出从索引号为1(包括此索引号),到索引号为11(不包括此索引号)的值,步长为2告诉我们隔一项打印一个。

我们可以忽略切片中的前两项,只使用步长变量:

通过把切片中的步长设置为3,每个索引号能够被3整除的元素打印出来:

0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12

通过使用正数或者负数形式的切片,并设置步长,我们可以更加有针对性地获取元组中的值。

元组的连接和复制

操作符可以被用来连接或者复制元组。连接是通过‘+’来完成,复制是‘*’来完成。

‘+’可以将两个或者多个元组连接在一起。我们可以把两个元组中的值合并得到一个新的元组。

输出结果为:

因为‘+’操作符可以用来连接,所以可以被用来将多个元组合并成一个新的元组,尽管如此,我们还是不能改变某一个已存在的元组。

‘*’操作符可以用来复制元组,也许你需要将某一目录下的文件全部拷贝到服务器上,或者你想和朋友分享一下播放列表,在这些情况下,你需要复制数据的集合。

让我们把coral元组乘以2,kelp元组乘以3,来创建新的元组。

通过‘*’操作符,我们可以将元组复制指定的次数,通过原有的数据序列去制造新的元组。

现有的元组可以通过‘+’或者‘*’来进行连接或者复制操作。

元组的函数

你可以使用一些内建函数来操作元组。

len

类似于字符串和列表,我们可以通过len函数计算元组的长度,把元组作为参数传递进去:

纯情的面包想得到不同集合长度的最大或最小值时,这个函数非常有用。

当对kelp元组和numbers使用len函数时,我们会得到如下输出:

我们得到上述输出是因为kelp有四个元素,numbers有13个元素:

上述实例中元组的长度比较小,当元组较长时len可以得到元素的具体数量。

max和min

当我们处理数值型的元组时(包括整数和浮点数),我们可以使用max和min函数去找到某一特定元组中的最大值和最小值。

这两个函数让我们能够得到定量数据的相关信息,如考试成绩,温度,价格等。

看一下由浮点数组成的元组:

为了使用max函数,需要把元组传递进函数,max(more_numbers)。

max函数能够得到元组中的最大值。

同样地,我们也可以使用min函数得到最小值。

如此我们就能找到并打印出元组中的最小值。

和len函数一样,当元组中的数据项较多时,max和min是很有用的。

元组和列表的不同之处

元组和列表的首要不同之处就是元组中的值不可修改的。这意味着不能在元组中添加或者删除值,某一数据项的值也不能修改。

不过,我们可以通过‘+’等操作符来构造新元组。

让我们再一次操作coral元组,我们想要把数据项‘blue coral’替换成‘black coral’。如果你试图像操作列表那样去操作元组:

它会报错。

这是因为元组的值是不能修改的。

如果构造完一个元组,而后你才发现真正需要的是列表形式,我们可以将其进行转换。

为了把元组转换成列表,我们可以使用list函数。

现在我们就把元组转换成用包裹的列表了。

同样地,你可以使用tuple函数将列表转换为元组。

你可以在“在Python3如何转换数据”学到更多相关知识。

总结

元组是一种有序的数据类型,它不能被修改,因其运行速度比列表快,所以使用元组的代码会有一定的优化。纯情的面包和其他人共同合作编写代码时,使用元组类型意味着你不想自己的数据序列被修改。

这篇导论阐述了元组的基本特性,包括索引,切片和拼接,同时也介绍了针对元组的内建函数。

英文原文:https://www.digitalocean.com/community/tutorials/understanding-tuples-in-python-3 译者:崔子橙

Published by

风君子

独自遨游何稽首 揭天掀地慰生平

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注