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中,交换两个变量ab的值只需要使用如下所示的代码。

a, b = b, a

同理,如果要将三个变量abc的值互换,即b赋给ac赋给ba赋给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天就够了!——常用数据结构之元组的主要内容,如果未能解决你的问题,请参考以下文章

Python 从入门到精通:一个月就够了

Python 从入门到精通:一个月就够了

Python 从入门到精通:一个月就够了?真的能行嘛?

python自学书籍推荐:从入门到精通,这三本书就够了!

自学Python很简单,从入门到精通1个月就够了

Python 从入门到精通:只需要三十天就够了!