理解 Python 3 中的元组

介绍

一个 tuple 是一个数据结构,它是一个不可变的或不可变的元素序列,因为 tuples 是不可变的,所以它们的值不能被修改。

1[secondary_label Example Tuple]
2coral = ('blue coral', 'staghorn coral', 'pillar coral', 'elkhorn coral')

Tuples 用于组合数据. 每个元素或值在 tuple 中称为元素。

双胞胎之间有( )字符串分开的值,空的符串将显示为coral = (),但即使有一个值的符串必须使用一个符串,如coral =(蓝色珊瑚)。

如果我们‘print()’上面的tuple,我们将收到下面的输出,tuple仍然按键入:

1print(coral)
1[secondary_label Output]
2('blue coral', 'staghorn coral', 'pillar coral', 'elkhorn coral')

当考虑PythonTuples和其他数据结构是类型的收藏时,有助于考虑您在计算机上拥有的所有不同的收藏:您的文件范围,您的歌曲播放列表,您的浏览器标记,您的电子邮件,您可以在流媒体服务中访问的视频集和更多。

双列类似于 列表,但它们的值无法修改. 因此,当您在代码中使用双列时,您正在向其他人传达您不打算对该值序列进行更改。

前提条件

如果您没有设置编程环境,您可以参考本地编程环境的安装和安装指南(https://www.digitalocean.com/community/tutorial_series/how-to-install-and-set-up-a-local-programming-environment-for-python-3)或适用于您的操作系统(Ubuntu, CentOS, Debian 等)的编程环境(https://www.digitalocean.com/community/tutorial_collections/how-to-install-python-3-and-set-up-a-programming-environment)。

双重索引

作为一个有序的元素序列,tuple中的每个项目可以通过索引单独命名。

每个项目都对应一个索引数,这是一个整数值,从索引数0开始。

<$>[info] 信息: 要跟进本教程中的示例代码,请在本地系统上运行python3命令,打开Python交互壳。

对于本教程开头的例子珊瑚 tuple,索引分布看起来像这样:

'blue coral''staghorn coral''pillar coral''elkhorn coral'
0123

第一项,字符串蓝色珊瑚从索引0开始,列表以索引3结束,标题elkhorn珊瑚

因为Python tuple中的每个项目都有相应的索引号码,所以我们可以访问项目。

现在我们可以通过引用其索引号称来调用tuple的单独项目:

1print(coral[2])
1[secondary_label Output]
2pillar coral

这个tuple的索引数字从03之间,如上表所示,因此,要单独调用任何一个项目,我们会提到索引数字如下:

1coral[0] = 'blue coral'
2coral[1] = 'staghorn coral' 
3coral[2] = 'pillar coral' 
4coral[3] = 'elkhorn coral'

如果我们以任何大于3的索引号称为珊瑚,它将处于范围之外,因为它将不有效:

1print(coral[22])
1[secondary_label Output]
2IndexError: tuple index out of range

除了积极的索引数外,我们还可以访问负的索引数的索引数的项目,从索引末尾回数,从-1开始,这尤其有用,如果我们有一个长的索引,我们想要指向索引末尾的项目。

对于相同的珊瑚,负指数分布看起来像这样:

'blue coral''staghorn coral''pillar coral''elkhorn coral'
-4-3-2-1

因此,如果我们想通过其负指数号来打印项目蓝色珊瑚,我们可以这样做:

1print(coral[-4])
1[secondary_label Output]
2blue coral

我们可以使用+运算符将字符串项目连接到其他字符串中:

1print('This reef is made up of ' + coral[1])
1[secondary_label Output]
2This reef is made up of staghorn coral

我们能够将字符串项在索引号 0 与字符串 ' 这个礁是由 '` 组成的。

使用与tuple中的项目相匹配的索引号码,我们可以密切访问tuple中的每个项目。

双胞胎切割

我们可以使用索引来调用数个项目,从 tuple. Slices 允许我们通过创建由一个 kolon `[x:y]' 分隔的索引数组来调用多个值。

假设我们只想打印珊瑚的中间元素,我们可以通过创建片段来做到这一点。

1print(coral[1:3])
1[secondary_label Output]
2('staghorn coral', 'pillar coral')

在创建片段时,如在[1:3]中,第一个索引数是片段开始的地方(包括),第二个索引数是片段结束的地方(专属),这就是为什么在我们的示例中,位置上面的项目12是打印的项目。

如果我们想包括列表的任何一个结尾,我们可以忽略tuple[x:y]语法中的一个数字,例如,如果我们想打印coral的头三个项目,即blue coral,staghorn coral,pillar coral,我们可以这样做:

1print(coral[:3])
1[secondary_label Output]
2('blue coral', 'staghorn coral', 'pillar coral')

这印刷了tuple的开始,在索引3之前就停止了。

要包括一个 tuple 末尾的所有项目,我们会扭转语法:

1print(coral[1:])
1[secondary_label Output]
2('staghorn coral', 'pillar coral', 'elkhorn coral')

我们还可以使用负索引数在切割tuples时,类似于正索引数:

1print(coral[-3:-1])
2print(coral[-2:])
1[secondary_label Output]
2('staghorn coral', 'pillar coral')
3('pillar coral', 'elkhorn coral')

我们可以使用的最后一个参数被称为 stride,它指的是在第一个项目从子中获取后要移动多少个项目。

到目前为止,我们已经忽略了步数参数,Python的默认值为步数1,以便在两个索引数之间的每个项目都被检索。

这个构造的语法是tuple[x:y:z],而z是指步骤。让我们做一个更大的列表,然后切断它,并给步骤一个值为2:

1numbers = (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12)
2
3print(numbers[1:11:2])
1[secondary_label Output]
2(1, 3, 5, 7, 9)

我们的构造数字[1:11:2]打印了包含1和排除11的索引数字之间的值,然后2的步值告诉程序只打印所有其他项目。

我们可以忽略前两个参数,并将stride作为一个参数使用语法 tuple[::z]:

1print(numbers[::3])
1[secondary_label Output]
2(0, 3, 6, 9, 12)

通过打印数字按步设置为3,只打印了每三个项目:

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

切割带有积极和消极索引数字和指示步伐的,为我们提供控制,以获得我们试图实现的输出。

聚合和倍增双胞胎

Operators可以用来连接或倍增 tuples.Concatenation 是用 + 运算器完成的,而倍增是用 * 运算器完成的。

可以使用+操作员将两个或两个以上的tuples连接在一起,我们可以将两个现有tuples的值分配给一个新的tuple:

1coral = ('blue coral', 'staghorn coral', 'pillar coral', 'elkhorn coral')
2kelp = ('wakame', 'alaria', 'deep-sea tangle', 'macrocystis')
3
4coral_kelp = (coral + kelp)
5
6print(coral_kelp)
1[secondary_label Output]
2('blue coral', 'staghorn coral', 'pillar coral', 'elkhorn coral', 'wakame', 'alaria', 'deep-sea tangle', 'macrocystis')

由于+操作员可以连接,它可以用来组合tuples以形成一个新的tuple,尽管它不能修改现有的tuple。

您可能需要将目录中的所有文件复制到服务器上,或与朋友共享播放列表 - 在这些情况下,您需要复制数据集。

让我们将珊瑚倍增为2和kelp倍增为3,并将这些分配给新的:

1multiplied_coral = coral * 2
2multiplied_kelp = kelp * 3
3
4print(multiplied_coral)
5print(multiplied_kelp)
1[secondary_label Output]
2('blue coral', 'staghorn coral', 'pillar coral', 'elkhorn coral', 'blue coral', 'staghorn coral', 'pillar coral', 'elkhorn coral')
3('wakame', 'alaria', 'deep-sea tangle', 'macrocystis', 'wakame', 'alaria', 'deep-sea tangle', 'macrocystis', 'wakame', 'alaria', 'deep-sea tangle', 'macrocystis')

通过使用*运算器,我们可以按我们指定的次数复制我们的tuples,根据原始数据序列创建新的tuples。

现有的tuples可以连接或倍增以通过使用+*操作员来形成新的tuples。

双重功能

有几个内置的功能,你可以用来使用tuples. 让我们看看其中一些。

( )

与字符串和列表一样,我们可以使用len()来计算一个字符串的长度,我们将这个字符串作为参数,如下:

1len(coral)

此函数对于需要执行最小或最大收集长度,例如,或比较序列数据时有用。

如果我们打印了我们kelp数字的长度,我们将获得以下输出:

1print(len(kelp))
2print(len(numbers))
1[secondary_label Output]
24
313

我们得到上述输出,因为tuplekelp有4个元素:

1kelp = ('wakame', 'alaria', 'deep-sea tangle', 'macrocystis')

数字的标题有13个元素:

1numbers = (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12)

虽然这些示例有相对较少的项目,但len()函数为我们提供了机会,看看有多少项目存在于大堆中。

max() 和 min()

当我们使用由数值元件组成的tuples(包括 integersfloats)时,我们可以使用 max()min() 函数来找到相应tuple中包含的最高和最低值。

这些功能允许我们查找有关定量数据的信息,如测试得分、温度、价格等。

让我们来看看由浮动组成的子:

1more_numbers = (11.13, 34.87, 95.59, 82.49, 42.73, 11.12, 95.57)

要获得 max(),我们会将 tuple 传入函数,如在 max(more_numbers). 我们将此与 print() 函数相结合,以便我们可以输出我们的结果:

1print(max(more_numbers))
1[secondary_label Output]
295.59

max()函数返回了我们 tuple 中最高的值。

同样,我们可以使用min()函数:

1print(min(more_numbers))
1[secondary_label Output]
211.12

在这里,最小的浮动被发现在子里,并打印出来。

len()函数一样,max()min()函数在使用包含许多值的tuples时非常有用。

双胞胎如何不同于列表

Tuples 与列表的主要不同之处在于它们不能被修改,这意味着无法将项目添加到或从 Tuples 删除,并且无法在 Tuples 中更换项目。

你可以將兩個或多個合在一起,以形成一個新的合。

让我们来看看我们的珊瑚:

1coral = ('blue coral', 'staghorn coral', 'pillar coral', 'elkhorn coral')

假设我们想用另一个名为黑色珊瑚的元素来代替蓝色珊瑚

1coral[0] = 'black coral'

我们将收到一个错误作为我们的输出:

1[secondary_label Output]
2TypeError: 'tuple' object does not support item assignment

这是因为tuples不能修改。

如果我们创建一个tuple并决定我们真正需要的是列表,我们可以将其转换为列表。

1list(coral)

现在,我们的珊瑚数据类型将是一个列表:

1coral = ['blue coral', 'staghorn coral', 'pillar coral']

我们可以看到,tuple 被转换为列表,因为列表变成了方块。

同样,我们可以用tuple()将列表转换为tuples。

您可以通过阅读如何在Python中转换数据类型 3](https://andsky.com/tech/tutorials/how-to-convert-data-types-in-python-3)来了解更多关于数据类型转换的信息。

结论

tuple 数据类型是一个序列式的 数据类型,无法修改,为您的程序提供优化,因为它比 Python 处理的列表更快一些。

本教程涵盖了tuples的基本功能,包括索引,切割和连接tuples,并展示了可用的内置功能。

Published At
Categories with 技术
comments powered by Disqus