大家好,我是Mr数据杨,今天,我要为大家讲解一段特殊的旅程,它与《三国演义》有关,而我们的主角是元组(tuple)。

让我们想象这样一个场景,三国演义中的诸葛亮,赵云,关羽,就像一个元组,他们三人被定义为一个固定的组合。这就像在Python中,我们把多个元素组合成一个元组:heroes = (‘诸葛亮’, ‘赵云’, ‘关羽’)。你不能随便更改三国的历史人物,同样,元组也是不可变的,这就是它的优点之一。

相比于列表,元组的不可变特性使得我们的数据更安全,就像我们无法随意更改历史一样。而且,元组占用的资源更少,运行效率更高,就好比赵云在战场上的轻装快行。

再讲到元组的分配、打包和解包,诸葛亮的智谋,赵云的勇猛,关羽的义气,我们可以轻松地将这些特质分配给他们,就像这样:wisdom, bravery, loyalty = heroes。每个人都有他们的特色,就如同元组中的每个元素。

总的来说,元组就像是我们的三国英雄,他们各有特色,不可替代,集合在一起,成为了一部不朽的历史剧。希望你们在Python的学习旅程中,能够更好地理解和运用元组,掌握其特性,发挥其威力。

定义和使用元组

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,)

元组分配、打包和解包

可以将包含多个项目的文字元组分配给单个对象。
Python学习笔记 - 探索元组Tuple的使用-LMLPHP

t
('曹操', '曹丕', '甄姫', '蔡文姫')

t[0]
'曹操'

t[-1]
'蔡文姫'

被打包的对象直接被分配新的元组中,并解释到各个元组对象。
Python学习笔记 - 探索元组Tuple的使用-LMLPHP

(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 的区别如下

06-04 17:22