一、元组
1.1 元组简介
元组是一种不可变的有序容器,用于存储多个值。元组的元素可以是不同类型的,且元素之间用逗号分隔。元组通常用于存储不可变的数据集合。
特点:
使用小括号
()
定义,但括号可以省略。元素多为异质的(不同类型)。
不可变(immutable),即创建后不能修改。
可以通过索引或解包访问元素。
1.2 元组创建
1.2.1 使用字面值创建
# 创建空元组
tuple = ()
# 创建单元素元组
tuple_1 = (42,)
# 创建多元素元组
tuple_2 = (1, "hello", 3.14)
# 省略括号创建元组
tuple_3 = 10, 20, 30
1.2.2 使用 tuple()
函数创建
# 从列表创建元组
tuple_1 = tuple([1, 2, 3])
# 从字符串创建元组
tuple_2 = tuple("Python")
# 从范围创建元组
tuple_3 = tuple(range(5))
1.3 元组操作
1.3.1 删除元组
元组中的元素不可删除,但可以使用 del
删除整个元组。
my_tuple = (1, 2, 3)
print(my_tuple) # 输出:(1, 2, 3)
del my_tuple
print(my_tuple) # 报错:name 'my_tuple' is not defined
1.3.2 访问元组
可以通过索引或切片访问元组中的元素。
tup1 = ('python', 'hqyj', 100, 200)
tup2 = (1, 2, 3, 4, 5, 6, 7)
print(tup1[0]) # 输出:python
print(tup2[1:5]) # 输出:(2, 3, 4, 5)
print(tup2[:4]) # 输出:(1, 2, 3, 4)
print(tup2[2:]) # 输出:(3, 4, 5, 6, 7)
1.3.3 解包元组
可以将元组中的元素解包到多个变量中。
colors = ("red", "green", "blue")
r, g, b = colors
print(r, g, b) # 输出:red green blue
如果元组中的元素数量多于变量数量,可以使用 *
捕获剩余元素。
t = (1, 2, 3, 4, 5)
a, b, *c = t
print(a, b, c) # 输出:1 2 [3, 4, 5]
1.4 元组运算
元组支持连接和重复操作。
tuple1 = (1, 2, 3)
tuple2 = (4, 5, 6)
# 连接元组
tuple_1 = tuple1 + tuple2
print(tuple_1) # 输出:(1, 2, 3, 4, 5, 6)
# 重复元组
tuple_2 = tuple1 * 2
print(tuple_2) # 输出:(1, 2, 3, 1, 2, 3)
1.5 元组不可变性
元组的不可变性指的是元组的内存内容不可变,但变量可以重新赋值。
my_tuple = (1, 2, 3)
my_tuple[1] = 100 # 报错:'tuple' object does not support item assignment
# 重新赋值
my_tuple = (10, 20, 30)
print(my_tuple) # 输出:(10, 20, 30)
如果需要修改元组中的元素,可以先将元组转换为列表,修改后再转换回元组。
t = (1, 2, 3)
t_list = list(t)
t_list[1] = 100
t = tuple(t_list)
print(t) # 输出:(1, 100, 3)
元组是不可变的,但如果元组中包含可变对象(如列表),这些可变对象的内容是可以修改的。
t = (1, 2, [3, 4])
t[2].append(5) # 修改元组中的列表
print(t) # 输出:(1, 2, [3, 4, 5])
所以,如果需要完全不可变的元组,确保元组中不包含可变对象。
1.6 元组的拼接与重复
元组支持拼接和重复操作,可以快速生成新的元组。
t1 = (1, 2)
t2 = (3, 4)
# 拼接元组
t3 = t1 + t2
print(t3) # 输出:(1, 2, 3, 4)
# 重复元组
t4 = t1 * 3
print(t4) # 输出:(1, 2, 1, 2, 1, 2)
1.7 元组常用 API
方法 | 描述 |
---|---|
len(tuple) | 返回元组中元素的个数。 |
max(tuple) | 返回元组中元素的最大值。 |
min(tuple) | 返回元组中元素的最小值。 |
tuple(list) | 将列表转换为元组。 |
s.index(x[, i[, j]]) | 返回元素 x 在元组中的索引,索引号在 i 或其后且在 j 之前) |
s.count(x) | 返回元素 x 在元组中出现的次数。 |