Python 元组

元组是Python中的一种数据结构,类似于列表(list)。但与列表不同,元组是不可变的,这意味着一旦创建了元组,就不能修改其内容。元组用圆括号 () 表示,其中包含逗号分隔的一组值。

创建元组

在 Python 中,元组是通过放置用“逗号”分隔的值序列(使用或不使用括号对数据序列进行分组)来创建的。

用于演示在元组中添加元素的 Python 程序。

# 创建一个空元组
Tuple1 = ()
print("初始空元组:")
print(Tuple1)

# 创建一个包含字符串的元组
Tuple1 = ('Jkhxw', 'For')
print("\n使用字符串创建的元组:")
print(Tuple1)

# 使用列表创建一个元组
list1 = [1, 2, 4, 5, 6]
print("\n使用列表创建的元组:")
print(tuple(list1))

# 使用内置函数创建一个元组
Tuple1 = tuple('Geeks')
print("\n使用函数创建的元组:")
print(Tuple1)

输出:

初始空元组:
()

使用字符串创建的元组:
('Jkhxw', 'For')

使用列表创建的元组:
(1, 2, 4, 5, 6)

使用函数创建的元组:
('G', 'e', 'e', 'k', 's')

创建具有混合数据类型的元组。

元组可以包含任意数量的元素和任意数据类型(如字符串、整数、列表等)。元组也可以用单个元素创建,但这有点棘手。括号中只有一个元素是不够的,必须有一个尾随的“逗号”才能使其成为一个元组。 

# 创建一个混合数据类型的元组
Tuple1 = (5, '欢迎', 7, 'Geeks')
print("\n包含不同数据类型的元组:")
print(Tuple1)

# 创建包含嵌套元组的元组
Tuple1 = (0, 1, 2, 3)
Tuple2 = ('python', 'geek')
Tuple3 = (Tuple1, Tuple2)
print("\n包含嵌套元组的元组:")
print(Tuple3)

# 创建一个重复的元组
Tuple1 = ('Geeks',) * 3
print("\n包含重复元素的元组:")
print(Tuple1)

# 使用循环创建元组
Tuple1 = ('Geeks')
n = 5
print("\n使用循环创建的元组:")
for i in range(int(n)):
    Tuple1 = (Tuple1,)
    print(Tuple1)

输出:

包含不同数据类型的元组:
(5, '欢迎', 7, 'Geeks')

包含嵌套元组的元组:
((0, 1, 2, 3), ('python', 'geek'))

包含重复元素的元组:
('Geeks', 'Geeks', 'Geeks')

使用循环创建的元组:
('Geeks',)
(('Geeks',),)
((('Geeks',),),)
(((('Geeks',),),),)
((((('Geeks',),),),),)

元组的访问

元组是不可变的,可以通过解包或索引(或者在命名元组的情况下甚至通过属性)来访问这些元素。列表是可变的,它们的元素通常是同质的,并且可以通过迭代列表来访问。

注意:在解包元组时,左侧变量的数量应等于给定元组 a 中的值的数量。 

# 使用索引访问元组
Tuple1 = tuple("Geeks")
print("\n元组的第一个元素:")
print(Tuple1[0])

# 元组解包
Tuple1 = ("Jkhxw", "For", "Geeks")

# 此行解包 Tuple1 的值
a, b, c = Tuple1
print("\n解包后的值:")
print(a)
print(b)
print(c)

输出:

元组的第一个元素: 
G

解包后的值: 
Jkhxw
For
Geeks

元组的拼接

元组拼接是连接两个或多个元组的过程。连接是通过使用“+”运算符来完成的。元组的拼接始终从原始元组的末尾开始。其他算术运算不适用于元组。 

注意 –只有相同的数据类型才能通过串联进行组合,如果组合列表和元组,则会出现错误。

# 元组的拼接
Tuple1 = (0, 1, 2, 3)
Tuple2 = ('Jkhxw', 'For', 'Geeks')

Tuple3 = Tuple1 + Tuple2

# 打印第一个元组
print("元组1:")
print(Tuple1)

# 打印第二个元组
print("\n元组2:")
print(Tuple2)

# 打印拼接后的元组
print("\n拼接后的元组:")
print(Tuple3)

输出:

元组1: 
(0, 1, 2, 3)

元组2: 
('Jkhxw', 'For', 'Geeks')

Tuples after Concatenation: 
(0, 1, 2, 3, 'Jkhxw', 'For', 'Geeks')

元组切片

元组切片的目的是从元组中获取特定范围或子元素切片。也可以对列表和数组进行切片。在列表中建立索引会导致获取单个元素,而切片则允许获取一组元素。 

# 创建一个元组
Tuple1 = tuple('JKHXWFORGEEKS')

# 移除第一个元素
print("移除第一个元素: ")
print(Tuple1[1:])

# 反转元组
print("\n反转序列后的元组: ")
print(Tuple1[::-1])

# 打印范围4-9之间的元素
print("\n打印范围4-9之间的元素: ")
print(Tuple1[4:9])

输出:

移除第一个元素: 
('E', 'E', 'K', 'S', 'F', 'O', 'R', 'G', 'E', 'E', 'K', 'S')

反转序列后的元组: 
('S', 'K', 'E', 'E', 'G', 'R', 'O', 'F', 'S', 'K', 'E', 'E', 'G')

打印范围4-9之间的元素: 
('S', 'F', 'O', 'R', 'G')

删除元组

元组是不可变的,因此不允许删除其中的一部分。使用 del() 方法删除整个元组。 

注意 –删除后打印元组会导致错误。 

# Deleting a Tuple

Tuple1 = (0, 1, 2, 3, 4)
del Tuple1

print(Tuple1)

内置方法

内置功能描述
index()在元组中查找并返回给定值可用的索引
count()统计指定元素在元组中出现的次数
all()如果所有元素都为 true 或元组为空,则返回 true
any()如果元组的任何元素为 true,则返回 true。如果元组为空,则返回 false
len()返回元组的长度或元组的大小
enumerate()返回元组的枚举对象
max()返回给定元组的最大元素
min()返回给定元组的最小元素
sum()对元组中的数字求和
sorted()输入元组中的元素并返回一个新的排序列表
tuple()将可迭代对象转换为元组。

元组 VS 列表

相似之处差异
可用于列表和元组的函数:len()、max()、min()、sum()、any()、all()、sorted()不能用于元组的方法:append()、insert()、remove()、pop()、clear()、sort()、reverse()
可用于列表和元组的方法:计数(),索引()我们通常将“元组”用于异构(不同)数据类型,将“列表”用于同质(相似)数据类型。
元组可以存储在列表中。迭代“元组”比“列表”更快。
列表可以存储在元组中。“列表”是可变的,而“元组”是不可变的。
“元组”和“列表”都可以嵌套。包含不可变元素的元组可以用作字典的键。