Python从入门到精通,100天就够了!——常用数据结构之元组
Posted Z_YingC
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python从入门到精通,100天就够了!——常用数据结构之元组相关的知识,希望对你有一定的参考价值。
上一篇文章为大家讲解了Python中的列表,它是一种容器型数据类型,我们可以通过定义列表类型的变量来保存和操作多个元素。当然,Python中容器型的数据类型肯定不止列表一种,接下来我们为大家讲解另一种重要的容器型数据类型,它的名字叫元组(tuple)
。
一、元组的定义和使用
1. 元组的定义
在Python中,元组也是多个元素按照一定的顺序构成的序列。元组和列表之间的主要区别是元组不能像列表那样改变元素的值,可以简单地理解为**“只读列表”。
元组和列表的不同之处在于,元组是不可变类型**,这就意味着元组类型的变量一旦定义,其中的元素不能再添加或删除,而且元素的值也不能进行修改。 定义元组通常使用()
字面量语法,也建议大家使用这种方式来创建元组。
元组的定义语法:
# 变量名 = (数据1, 数据2, 数据3)
2. 元组的创建方法
(1)字面量语法
定义元组通常使用()
字面量语法,也建议大家使用这种方式来创建元组。
例如:
tuple1 = (2, 5, 9)
tuple2 = ('apple', 'watermelon', 'grape')
# 创建一个空元组
tup = ()
注意:
若要创建只包含一个值的元组,需要再该值后加一个,
,否则()
就不是代表元组的字面量语法,而是改变运算优先级的圆括号。例如:
tuple3 = (15)
print(type(tuple3)) # <class 'int'>
tuple4 = (15,)
print(type(tuple4)) # <class 'tuple'>
3. 元组的运算符
元组和列表的运算符基本相同,具体看以下例子:
tup1 = ('中国',)
tup2 = ('巴西', '俄罗斯', '法国', '英国', '加拿大')
# 重复运算
print(tup1 * 3) # ('中国', '中国', '中国')
# 合并运算
tup3 = tup1 + tup2
print(tup3) # ('中国', '巴西', '俄罗斯', '法国', '英国', '加拿大')
# 成员运算
print('法国' in tup2) # True
print('中国' not in tup2) # True
# 查看元组中元素的数量
print(len(tup3)) # 6
# 索引和切片
# 偏移量,从零开始,输出索引为2的值;负数:从右到左,输出索引为-1的值
print(tup2[2], tup3[-1]) # 法国 加拿大
# 切片提取部分,索引0到3的值,索引1到2的值
print(tup2[0: 4]) # ('巴西', '俄罗斯', '法国', '英国')
print(tup2[1: 3]) # ('俄罗斯', '法国')
# 元组整体切片,从索引为-1倒着输出;整体切片,步长为3
print(tup2[::-1]) # ('加拿大', '英国', '法国', '俄罗斯', '巴西')
print(tup3[::3]) # ('中国', '法国')
4. 元组的遍历
每次循环都将 从元组中顺序的读取出来的数据放在临时变量中,然后执行相同的操作。使用for循环进行迭代遍历。
示例如下:
# 循环遍历元组中的元素
tup4 = (1, 5, 9, 6)
for num in tup4:
print(num, end=' ') # 1 5 9 6
二、元组的应用场景
1.打包和解包操作。
打包就是当我们把多个用逗号分隔的值赋给一个变量时,多个值会打包成一个元组类型;当我们把一个元组赋值给多个变量时,元组会解包成多个值然后分别赋给对应的变量就是解包。如下面的代码所示。
# 打包
a = 1, 10, 100
print(type(a), a) # <class 'tuple'> (1, 10, 100)
# 解包
i, j, k = a
print(i) # 1
print(j) # 10
print(k) # 100
注意:
在解包时,如果解包出来的元素个数和变量个数不对应,会引发ValueError
异常,错误信息为:too many values to unpack
(解包的值太多)或not enough values to unpack
(解包的值不足)。a = 1, 10, 100, 1000 # i, j, k = a # ValueError: too many values to unpack (expected 3) # i, j, k, l, m, n = a # ValueError: not enough values to unpack (expected 6, got 4)
有一种解决变量个数少于元素的个数方法,就是使用星号表达式,以在变量前边添加一个*,这样变量将会获取元组中所有剩余的元素,用星号表达式修饰的变量会变成一个列表,列表中有0个或多个元素。在解包语法中,星号表达式只能出现一次。例如
a, *_, c = 5, 10, 15, 20, 25 print(a) # 5 print(c) # 25 a, b, *c = 'hello' print(a) # h print(b) # e print(c) # ['l', 'l', 'o'] a, b, *c = 5, 10 print(a) # 5 print(b) # 10 print(c) #[]
2.交换两个变量的值
交换两个变量的值是编程语言中的一个经典案例,在很多编程语言中,交换两个变量的值都需要借助一个中间变量才能做到,如果不用中间变量就需要使用比较晦涩的位运算来实现。在Python中,交换两个变量a
和b
的值只需要使用如下所示的代码。
a, b = b, a
同理,如果要将三个变量a
、b
、c
的值互换,即b
赋给a
,c
赋给b
,a
赋给c
,也可以如法炮制。
a, b, c = 15, 25, 35
a, b, c = b, c, a
print(a,b,c) # 25 35 15
三、元组与列表相互转换
Python中的元组和列表是可以相互转换的,我们可以通过下面的代码来做到。
# 将元组转换成列表
tup = ('watermelon', 2.5, True, '宁夏')
print(list(tup)) # ['watermelon', 2.5, True, '宁夏']
# 将列表转换成元组
fruits = ['apple', 'banana', 'orange']
print(tuple(fruits)) # ('apple', 'banana', 'orange')
以上就是元组(tuple)的基本知识。Get It!
以上是关于Python从入门到精通,100天就够了!——常用数据结构之元组的主要内容,如果未能解决你的问题,请参考以下文章