Python Tuple用于存储不可变python对象的序列。元组类似于列表,因为可以改变列表中存储的项的值,而元组是不可变的,并且不能改变存储在元组中的项的值。
元组可以写成用小括号括起来的逗号分隔值的集合。元组可以定义如下。
T1 = (101, "Ayush", 22) T2 = ("Apple", "Banana", "Orange")
例1
tuple1 = (10, 20, 30, 40, 50, 60) print(tuple1) count = 0 for i in tuple1: print("tuple1[%d] = %d"%(count, i));
输出:
(10,20,30,40,50,60) tuple1 [0] = 10 tuple1 [0] = 20 tuple1 [0] = 30 tuple1 [0] = 40 tuple1 [0] = 50 tuple1 [0] = 60
例2
tuple1 = tuple(input("Enter the tuple elements ...")) print(tuple1) count = 0 for i in tuple1: print("tuple1[%d] = %s"%(count, i));
输出:
Enter the tuple elements ...12345 ('1', '2', '3', '4', '5') tuple1[0] = 1 tuple1[0] = 2 tuple1[0] = 3 tuple1[0] = 4 tuple1[0] = 5
但是,如果我们尝试重新分配元组的项目,元组会报错误,因为元组对象不支持项目分配。
元组是不可变数据类型
空元组可以写成如下。
T3 = ()
具有单个值的元组必须包含下面给出的逗号。
T4 = (90,)
元组的索引方式与列表相同。可以使用特定索引值访问元组中的项。
元组索引和拆分
元组中的索引和切片类似于列表。元组中的索引从0开始并转到长度(元组) - 1。
可以使用切片运算符访问元组中的项。Python还允许我们使用冒号运算符来访问元组中的多个项目。
通过以下图像以详细了解索引和切片。
与列表不同,使用del关键字无法删除元组项,因为元组是不可变的。要删除整个元组,我们可以将del关键字与元组名称一起使用。
请学习以下示例。
tuple1 = (1, 2, 3, 4, 5, 6) print(tuple1) del tuple1[0] print(tuple1) del tuple1 print(tuple1)
输出:
(1, 2, 3, 4, 5, 6) Traceback (most recent call last): File "tuple.py", line 4, in <module> print(tuple1) NameError: name 'tuple1' is not defined
与列表一样,可以在两个方向上访问元组元素。可以使用索引-1访问元组的最右边元素(最后一个)。使用负索引遍历从左到右的元素。
tuple1 = (1, 2, 3, 4, 5) print(tuple1[-1]) print(tuple1[-4])
输出:
5 2
基本元组操作
连接(+),重复(*),成员(in)等运算符的工作方式与它们使用列表的方式相同。请考虑下表以获取更多详细信息。
假设Tuple t =(1,2,3,4,5)和Tuple t1 =(6,7,8,9)。
运算符 | 描述 | 示例 |
重复 | 重复运算符使元组元素重复多次。 | T1 * 2 =(1,2,3,4,5,1,2,3,4,5) |
级联 | 它连接运算符两侧提到的元组。 | T1 + T2 =(1,2,3,4,5,6,7,8,9) |
in | 如果元组中存在特定项,则返回true,否则返回false。 | print (2 in T1) True. |
迭代 | for循环用于迭代元组元素。 | for i in T1: 1 |
长度 | 它用于获取元组的长度。 | len(T1)= 5 |
Python Tuple内置函数
SN | 函数 | 描述 |
1 | cmp(tuple1, tuple2) | 比较两个元组元素。 |
2 | len(tuple) | 计算元组元素个数。 |
3 | tuple(seq) | 将列表转换为元组。 |
4 | min(tuple) | 返回元组中元素最小值。 |
5 | max(tuple) | 返回元组中元素最大值。 |
哪里使用元组
在以下场景中使用元组而不是列表。
1.使用元组而不是列表让我们清楚地知道元组数据是常量且不得更改。
元组可以在没有键的情况下模拟字典。考虑以下嵌套结构,它可以用作字典。
[(101, "John", 22), (102, "Mike", 28), (103, "Dustin", 30)]
由于其不可变性,元组可以用作字典中的键。
列表与元组的对比
SN | 列表List | 元组Tuple |
1 | 列表的文字语法由[]显示。 | 元组的文字语法由()显示。 |
2 | 列表是可变的。 | 元组是不可变的。 |
3 | 列表具有可变长度。 | 元组具有固定长度。 |
4 | 该列表提供了比元组更多的功能。 | 元组提供的功能少于列表。 |
5 | 列表用于我们需要存储简单集合而没有约束的场景中,其中可以更改项的值。 | 元组用于我们需要存储只读集合的情况,即,项目的值不能更改。它可以用作字典中的键。 |
嵌套列表和元组
我们可以将列表中的元组或元组内的列表存储到任意级别。
让我们看一个如何将元组存储在列表中的示例。
Employees = [(101, "Ayush", 22), (102, "john", 29), (103, "james", 45), (104, "Ben", 34)] print("----Printing list----"); for i in Employees: print(i) Employees[0] = (110, "David",22) print(); print("----Printing list after modification----"); for i in Employees: print(i)
输出:
----Printing list---- (101, 'Ayush', 22) (102, 'john', 29) (103, 'james', 45) (104, 'Ben', 34) ----Printing list after modification---- (110, 'David', 22) (102, 'john', 29) (103, 'james', 45) (104, 'Ben', 34)