Bootstrap

Python基础学习(三):元组

一、元组        

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 在元组中出现的次数。
;