数据类型-元组Tuple


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还允许我们使用冒号运算符来访问元组中的多个项目。

通过以下图像以详细了解索引和切片。

未命名图片.png

与列表不同,使用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:
   print(i)
输出:

1
2
3
4
5

长度它用于获取元组的长度。len(T1)= 5


Python Tuple内置函数

SN函数描述
1cmp(tuple1, tuple2)
比较两个元组元素。
2len(tuple)
计算元组元素个数。
3tuple(seq)
将列表转换为元组。
4min(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)