📜  Python元组Tuple

📅  最后修改于: 2020-01-13 11:48:07             🧑  作者: Mango

元组是Python对象的集合,很像一个列表。存储在元组中的值的序列可以是任何类型,并且它们由整数索引。列表和元组之间的重要区别在于元组是不可变的。同样,元组是可哈希的,而列表则不可(思考下这有什么作用)。
元组的值在语法上用“逗号”分隔。尽管不是必需的,但更常见的是通过()括号中的值序列来定义元组。这有助于更轻松地理解Python元组。
元组是不可变的,通常,它们包含一系列异构元素,这些元素可以通过拆包或索引(甚至在命名元组的情况下通过属性)进行访问。列表是可变的,并且它们的元素通常是同质的(也可以是异构的),并且可以通过遍历列表来访问。

创建一个元组

在Python中,元组是通过放置由“逗号”分隔的值序列(使用或不使用括号将数据序列分组)来创建的。元组可以包含任意数量的元素和任何数据类型(例如字符串,整数,列表等)。元组也可以用单个元素创建,但是有点棘手。要注意:括号中仅包含一个元素是不够的,必须在其后加上一个“逗号”以使其成为一个元组。
注:不使用括号创建Python元组称为Tuple Packing。

# Python代码,展示元组操作
# 创建一个空元组
Tuple1 = ()
print("创建空元组: ")
print (Tuple1)
# 用string创建元组
Tuple1 = ('芒果', '文档')
print("\n用string创建元组: ")
print(Tuple1)
# 使用list列表创建元组Tuple
list1 = [1, 2, 4, 5, 6]
print("\n使用list列表创建元组Tuplet: ")
print(tuple(list1))
# 使用循环创建元组
Tuple1 = ('芒果')
n = 5
print("\n使用循环创建元组: ")
for i in range(int(n)):
    Tuple1 = (Tuple1,)
    print(Tuple1)
# 使用内建函数创建元组
Tuple1 = tuple('芒果')
print("\n使用内建函数创建元组: ")
print(Tuple1)
# 使用不同的数据类型创建元组
Tuple1 = (5, '欢迎', 7, '芒果')
print("\n使用不同的数据类型创建元组: ")
print(Tuple1)
# 使用嵌套元组创建元组
Tuple1 = (0, 1, 2, 3)
Tuple2 = ('Python', '芒果')
Tuple3 = (Tuple1, Tuple2)
print("\n使用嵌套元组创建元组: ")
print(Tuple3)
# 使用重复创建元组
Tuple1 = ('芒果',) * 3
print("\n使用重复创建元组: ")
print(Tuple1)

输出:

创建空元组
()
用string创建元组:
('芒果', '文档')
使用list列表创建元组Tuplet:
(1, 2, 4, 5, 6)
使用循环创建元组
('芒果',)
(('芒果',),)
((('芒果',),),)
(((('芒果',),),),)
((((('芒果',),),),),)
使用内建函数创建元组:
('芒', '果')
使用不同的数据类型创建元组:
(5, '欢迎', 7, '芒果')
使用嵌套元组创建元组:
((0, 1, 2, 3), ('Python', '芒果'))
使用重复创建元组:
('芒果', '芒果', '芒果')

元组的串联

元组的串联是两个或多个元组的连接过程。串联是通过使用’+’运算符完成的。元组的连接总是从原始元组的末尾开始。其他算术运算不适用于元组。
注意:只有相同的数据类型才能与串联组合,如果将列表和元组组合,则会出现错误。

# 元组的串联
Tuple1 = (0, 1, 2, 3)
Tuple2 = ('芒果', '文档', '芒果')
Tuple3 = Tuple1 + Tuple2
# 打印元组1
print("元组1: ")
print(Tuple1)
# 打印元组2
print("\元组2: ")
print(Tuple2)
# 打印最终元组
print("\n串联后的元组: ")
print(Tuple3)

输出:

元组1:
(0, 1, 2, 3)
元组2:
('芒果', '文档', '芒果')
串联后的元组:
(0, 1, 2, 3, '芒果', '文档', '芒果')

元组切片

完成元组切片以从元组中获取特定范围内容或子元素切片。也可以对列表进行切片,在列表中使用索引导致获取单个元素,而切片允许获取一组元素。
注意:负增量值也可以用于反转元组的顺序

# 元组切片
# 初始化元组
Tuple1 = tuple('芒果文档')
# Removing First element
print("第一个元素删除后: ")
print(Tuple1[1:])
# 反转元组
print("\n反转元组之后: ")
print(Tuple1[::-1])
# 在一定范围内打印元组
print("\n打印index为0~2的元组切片: ")
print(Tuple1[0:2])

输出:

第一个元素删除后:
('果', '文', '档')
反转元组之后:
('档', '文', '果', '芒')
打印index为0~2的元组切片:
('芒', '果')

删除元组

元组是不可变的,因此不允许删除其中的一部分。通过使用del()方法可以删除整个元组。
注: 删除后打印元组将导致错误。

# 删除元组
Tuple1 = (0, 1, 2, 3, 4)
del Tuple1
print(Tuple1)

输出:

Traceback (most recent call last):
File “/home/efa50fd0709dec08434191f32275928a.py", line 7, in
print(Tuple1)
NameError: name ‘Tuple1’ is not defined

内建函数

内建函数 描述
all() 如果所有元素都为true或tuple为空,则返回true
any() 如果元组的任何元素为true,则返回true。如果元组为空,则返回false
len() 返回元组的长度或元组的大小
enumerate() 返回元组的枚举对象
max() 返回给定元组的最大元素
min() 返回给定元组的最小元素
sum() 对元组中的数字求和
sorted() 在元组中输入元素并返回新的排序列表
tuple() 将iterable转换为元组。