介绍
一个 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' |
---|---|---|---|
0 | 1 | 2 | 3 |
第一项,字符串蓝色珊瑚
从索引0
开始,列表以索引3
结束,标题elkhorn珊瑚
。
因为Python tuple中的每个项目都有相应的索引号码,所以我们可以访问项目。
现在我们可以通过引用其索引号称来调用tuple的单独项目:
1print(coral[2])
1[secondary_label Output]
2pillar coral
这个tuple的索引数字从0
到3
之间,如上表所示,因此,要单独调用任何一个项目,我们会提到索引数字如下:
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]
中,第一个索引数是片段开始的地方(包括),第二个索引数是片段结束的地方(专属),这就是为什么在我们的示例中,位置上面的项目1
和2
是打印的项目。
如果我们想包括列表的任何一个结尾,我们可以忽略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(包括 integers和 floats)时,我们可以使用 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,并展示了可用的内置功能。