欢迎各位,我是Mr数据杨,你们的Python导游。今天,我要为大家讲解一段特殊的旅程,它与《三国演义》有关,而我们的主角是元组(tuple)。
让我们想象这样一个场景,三国演义中的诸葛亮,赵云,关羽,就像一个元组,他们三人被定义为一个固定的组合。这就像在Python中,我们把多个元素组合成一个元组:heroes = (‘诸葛亮’, ‘赵云’, ‘关羽’)。你不能随便更改三国的历史人物,同样,元组也是不可变的,这就是它的优点之一。
相比于列表,元组的不可变特性使得我们的数据更安全,就像我们无法随意更改历史一样。而且,元组占用的资源更少,运行效率更高,就好比赵云在战场上的轻装快行。
再讲到元组的分配、打包和解包,诸葛亮的智谋,赵云的勇猛,关羽的义气,我们可以轻松地将这些特质分配给他们,就像这样:wisdom, bravery, loyalty = heroes。每个人都有他们的特色,就如同元组中的每个元素。
总的来说,元组就像是我们的三国英雄,他们各有特色,不可替代,集合在一起,成为了一部不朽的历史剧。希望你们在Python的学习旅程中,能够更好地理解和运用元组,掌握其特性,发挥其威力。
文章目录
- 定义和使用元组
- 元素对比列表的优点
- 元组分配、打包和解包
- Tuple与List区别
定义和使用元组
t = ('曹操', '曹丕', '甄姫', '蔡文姫')
t
('曹操', '曹丕', '甄姫', '蔡文姫')
t[0]
'曹操'
t[-1]
'蔡文姫'
t[1::2]
('曹丕', '蔡文姫')
# 可以进行倒序排列
t[::-1]
('蔡文姫', '甄姫', '曹丕', '曹操')
# 元组不可修改
t = ('曹操', '曹丕', '甄姫', '蔡文姫')
t[2] = '曹丕k'
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'tuple' object does not support item assignment
元素对比列表的优点
- 处理速度更快。
- 防止被意外修改。
- 字典需要不可变更类型的值作为组件。
# 元素用,分割
a = '曹操'
b = 42
a, 3.14159, b
('曹操', 3.14159, 42)
# 定义一个空的元组
t = ()
type(t)
<class 'tuple'>
# 定义项目的元组
t = (2,)
type(t)
<class 'tuple'>
t[0]
2
t[-1]
2
# 元组单一元素会包含符号
print(t)
(2,)
元组分配、打包和解包
可以将包含多个项目的文字元组分配给单个对象。
t
('曹操', '曹丕', '甄姫', '蔡文姫')
t[0]
'曹操'
t[-1]
'蔡文姫'
被打包的对象直接被分配新的元组中,并解释到各个元组对象。
(s1, s2, s3, s4) = t
s1, s2, s3, s4 = t
s1
'曹操'
s2
'曹丕'
s3
'甄姫'
s4
'蔡文姫'
解包时,左边的变量个数必须与元组中的值个数相匹配。
(s1, s2, s3) = t
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: too many values to unpack (expected 3)
(s1, s2, s3, s4, s5) = t
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: not enough values to unpack (expected 5, got 4)
打包、解包一步操作
(s1, s2, s3, s4) = ('曹操', '曹丕', '甄姫', '蔡文姫')
s1, s2, s3, s4 = '曹操', '曹丕', '甄姫', '蔡文姫'
s1
'曹操'
s2
'曹丕'
s3
'甄姫'
s4
'蔡文姫'
元组互换进行互换赋值。
a = '曹操'
b = '曹丕'
a, b
('曹操', '曹丕')
a, b = b, a
a, b
('曹丕', '曹操')
Tuple与List区别
元组 Tuple,对象的有序集合,称为元组。与列表的区别在于元组是通过括号 ( () ) 而不是方括号 ( [] ) 中来定义的,以及元素不可变。
people_tuple = ('曹操', '曹丕', '甄姫', '蔡文姫')
print(people_tuple )
('曹操', '曹丕', '甄姫', '蔡文姫')
people_list
('曹操', '曹丕', '甄姫', '蔡文姫')
列表List 和 元组Tuple 可以说是 Python 中最通用、最有用的数据类型。
列表是动态的,而元组具有静态特征。
List 与 Tuple 的区别如下
功能说明 | 列表 | 元组 |
---|---|---|
元素操作 | 可变 | 不可变 |
迭代耗时 | 耗时多 | 相对较快 |
操作修改 | 执行插入、删除、追加操作 | 仅限访问元素 |
内存消耗 | 消耗内存多 | 消耗内存少 |
内置方法 | 内置方法多 | 内置方法少 |
容错概率 | 易发生变化和错误 | 难发生 |