元组是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() |
可用于列表和元组的方法:计数(),索引() | 我们通常将“元组”用于异构(不同)数据类型,将“列表”用于同质(相似)数据类型。 |
元组可以存储在列表中。 | 迭代“元组”比“列表”更快。 |
列表可以存储在元组中。 | “列表”是可变的,而“元组”是不可变的。 |
“元组”和“列表”都可以嵌套。 | 包含不可变元素的元组可以用作字典的键。 |