# 二.tuple 元组
# 1.tuple 元组定义
不可改变
# 定义元组
t1 = (1, "Hello", True)
t2 = ()
t3 = tuple()
print(f"t1的类型是:{type(t1)}, 内容是:{t1}")
print(f"t2的类型是:{type(t2)}, 内容是:{t2}")
print(f"t3的类型是:{type(t3)}, 内容是:{t3}")
1
2
3
4
5
6
7
2
3
4
5
6
7
# 2.tuple 单元组
# 定义单个元素的元素
t4 = ("hello", )
print(f"t4的类型是:{type(t4)}, t4的内容是:{t4}")
1
2
3
2
3
# 3.元组嵌套
# 元组的嵌套
t5 = ( (1, 2, 3), (4, 5, 6) )
print(f"t5的类型是:{type(t5)}, 内容是:{t5}")
1
2
3
2
3
# 4.tuple 元组取值
t5 = ( (1, 2, 3), (4, 5, 6) )
# 下标索引去取出内容
num = t5[1][2]
print(f"从嵌套元组中取出的数据是:{num}")
1
2
3
4
2
3
4
# 5.index 函数
# 元组的操作:index查找方法
t6 = ("传智教育", "黑马程序员", "Python")
index = t6.index("黑马程序员")
print(f"在元组t6中查找黑马程序员,的下标是:{index}")
1
2
3
4
2
3
4
# 6.count 函数
# 元组的操作:count统计方法
t7 = ("传智教育", "黑马程序员", "黑马程序员", "黑马程序员", "Python")
num = t7.count("黑马程序员")
print(f"在元组t7中统计黑马程序员的数量有:{num}个")
1
2
3
4
2
3
4
# 7.len 函数
# 元组的操作:len函数统计元组元素数量
t8 = ("传智教育", "黑马程序员", "黑马程序员", "黑马程序员", "Python")
num = len(t8)
print(f"t8元组中的元素有:{num}个")
1
2
3
4
2
3
4
# 8.tuple 元组遍历
# 元组的遍历:while
index = 0
while index < len(t8):
print(f"元组的元素有:{t8[index]}")
# 至关重要
index += 1
# 元组的遍历:for
for element in t8:
print(f"2元组的元素有:{element}")
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
# 9.tuple 元组修改
# 修改元组内容
# t8[0] = "itcast"
# 定义一个元组
t9 = (1, 2, ["itheima", "itcast"])
print(f"t9的内容是:{t9}")
t9[2][0] = "黑马程序员"
t9[2][1] = "传智教育"
print(f"t9的内容是:{t9}")
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
# 1.引言
在 Python 中,元组(Tuple)是一种非常基础且常用的数据结构,它与列表(List)类似,但元组是不可变的。这意味着一旦元组被创建,就不能对其进行修改,比如添加、删除或更改元素。这种不可变性使得元组在某些情况下比列表更加安全和高效。
# 2.元组的定义与创建
元组可以通过圆括号()
来定义,也可以省略括号直接使用逗号,
。下面展示了两种创建元组的方法:
# 使用圆括号创建元组
tup1 = (1, 2, 3)
# 省略圆括号直接使用逗号创建单元素元组
tup2 = 4,
1
2
3
4
5
2
3
4
5
# 3.元组的特点
- 不可变性:一旦创建,元组中的元素就不能被修改。
- 索引:元组支持索引,可以通过索引访问元组中的元素。
- 切片:元组支持切片操作,可以获取元组的一部分。
- 可迭代:元组是可迭代的,可以用于
for
循环中。 - 散列性:由于元组是不可变的,它们是可哈希的,可以作为字典的键。
# 4.元组的操作
虽然元组不可变,但 Python 提供了一些内置的方法来操作元组:
len(tup)
:获取元组的长度。tup[index]
:获取元组中指定索引的元素。tup[start:end]
:获取元组中的一部分,即切片操作。
# 5.元组与列表的转换
元组和列表之间可以相互转换:
- 使用
list()
函数可以将元组转换为列表。 - 使用
tuple()
函数可以将列表转换为元组。
# 将元组转换为列表
list1 = list(tup1)
# 将列表转换为元组
tup3 = tuple(list1)
1
2
3
4
5
2
3
4
5
# 6.元组的应用场景
由于元组的不可变性,它通常用于以下场景:
- 函数返回多个值:Python 函数可以返回元组,这样就可以一次返回多个值。
- 作为字典的键:由于元组是不可变的,它可以用作字典的键。
- 存储配置数据:当需要存储一些不应改变的数据时,使用元组可以保证数据的安全性。
# 7.元组与列表的性能比较
在某些情况下,元组的性能要优于列表,尤其是在创建大量数据时。由于元组是不可变的,Python 解释器可以对元组进行一些优化,比如:
- 元组的内存分配是一次性的,而列表在添加元素时可能需要多次内存分配。
- 元组的哈希值在创建时就计算并存储,而列表则需要在需要时计算。
# 8.元组的高级用法
虽然元组看起来简单,但它也有一些高级用法,比如:
- 嵌套元组:元组中可以包含其他元组,形成嵌套结构。
- 多返回值:函数可以返回一个包含多个元素的元组。
- 解包:Python 支持元组的解包,可以将元组中的元素直接赋值给多个变量。
# 函数返回多个值
def get_user_info():
return ("Alice", 30, "Engineer")
# 使用解包获取返回值
name, age, job = get_user_info()
1
2
3
4
5
6
2
3
4
5
6
# 9.低级 BUG
在开发过程中,不要随意在结尾写逗号,不然会出现莫名其妙的 bug
t = 1,
s = 1
print(type(t))
print(type(s))
1
2
3
4
5
2
3
4
5
<class 'tuple'> <class 'int'>