Python基础-4.元组
一、元组的基本使用
Python的元组与列表类似,不同之处在于元组的元素不能修改,但是元组可以增加。
元组使用小括号(),列表使用方括号[]。
元组创建很简单,只需要在括号中添加元素,并使用逗号隔开即可。
元组的赋值
元组的赋值也是使用=符号进行赋值即可。
【示例】
# 创建空元组
tup0 = ()
# 定义赋值元组
tup1 = ('red', 'green', 'blue', 'yellow', 'black')
tup2 = (1, 2, 3, 4, 5)
tup3 = 'google', 'baidu', 1997, 2023 # 不加括号也行
print('赋值创建元组tup1、tup2、tup3:', tup1, tup2, tup3)
当元组中值包含一个元素的时候需要在元素后面加逗号,,否则括号会被当成是运算符使用。
【示例】
# 元组中只包含一个元素时,需要在元素后面添加逗号 , ,否则括号会被当作运算符使用
tup4 = (10)
tup5 = (10,)
print('tup4:', tup4, ' tup4的类型:', type(tup4)) # 结果为 <class 'int'>
print('tup5:', tup5, ' tup5的类型:', type(tup5)) # 结果为 <class 'tuple'>
元组的取值
定义一个元组供下面示例使用:
tup1 = ('red', 'green', 'blue', 'yellow', 'black')
访问元组的元素的值和列表一样,索引0开始,第二个索引是1,依此类推,反过来最后一个元素的索引为-1,往前一位为-2,以此类推。
print('元组tup1第一位:', tup1[0])
print('元组tup1第二位:', tup1[1])
'''运行结果如下
元组tup1第一位: red
元组tup1第二位: green
'''
元组的切片取值
跟列表一样,元组一样可以通过切片来截取元组的值。
【示例】
# 3-倒数第3的元素
print('获取第3个元素到倒数第3个元素:', tup1[2:-2])
# 4开始后面所有元素
print('获取第4个元素开始后面所有元素:', tup1[3:])
# 倒数第4开始前面所有元素
print('获取倒数第4个元素开始前面所有元素:', tup1[:-3])
'''运行结果如下
获取第3个元素到倒数第3个元素: ('blue',)
获取第4个元素开始后面所有元素: ('yellow', 'black')
获取倒数第4个元素开始前面所有元素: ('red', 'green')
'''
元组可用内置函数
跟列表一样,元组也可以使用一些内置函数。
len():计算元组元素个数sorted():对元组进行排序max():列出元组元素最大值min():列出元组元素最小值tuple():将可迭代系列转换为元组
【示例】
tup1 = ('red', 'green', 'blue', 'yellow', 'black')
tup2 = (1, 2, 3, 4, 5)
# 元组长度脚本操作符号使用len()
print('tup1的长度为:', len(tup1))
# 列表排序
print('tup1排序后:', sorted(tup1))
# 列表中最大最小值
print('tup2中最大值为:', max(tup2), 'tup2中最小值为:', min(tup2))
'''运行结果如下
tup1的长度为: 5
tup1排序后: ['black', 'blue', 'green', 'red', 'yellow']
tup2中最大值为: 5 tup2中最小值为: 1
'''
二、元组的操作
元组方法
元组函数以及方法和列表基本相同,tuple()将可迭代系列转换为元组
【示例】将列表转化为元组
a = [1, 2, 3, 4]
b = tuple(a)
print('a的类型为:', type(a)) # 结果为 a的类型为: <class 'list'>
print('b的类型为:', type(b)) # 结果为 b的类型为: <class 'tuple'>
增加元素
定义一个元组供下面示例使用:
tup1 = ('red', 'green', 'blue', 'yellow', 'black')
元组中的元素是不允许进行修改的,但是我们可以对元组进行拼接操作对末尾进行追加来实现增加元素。
我们只需要通过使用算术运算符+来增加元素。
【示例】代码如下:
new_tup = tup1 + ('white',)
print('new_tup的值:', new_tup)
'''运行结果如下
new_tup的值: ('red', 'green', 'blue', 'yellow', 'black', 'white')
'''
删除元素
定义一个元组供下面示例使用:
tup2 = (1, 2, 3, 4, 5)
虽然不能对元组的元素进行修改,但是使用del关键字对元组进行删除。删除了之后输出变量会有异常报错信息。
【示例】代码如下:
del tup2
print(tup2)
''' 运行结果如下
Traceback (most recent call last):
File "/....../test/test.py", line 11, in <module>
print(tup2)
NameError: name 'tup2' is not defined. Did you mean: 'tup1'?
'''
遍历元组
定义一个元组供下面示例使用:
tup = ('red', 'green', 'blue', 'yellow', 'black')
跟列表一样元组也可以使用for循环配合成员运算符in对列表进行遍历查询元组中的元素。
【示例】代码如下:
num = 1
for i in tup:
print(f'第{num}个元素的值:', i)
num += 1
''' 运行结果如下
第1个元素的值: red
第2个元素的值: green
第3个元素的值: blue
第4个元素的值: yellow
第5个元素的值: black
'''
同样我们也可以像列表使用enumerate()函数,通过start=1参数就是计数以1为起点开始计数来遍历输出元组的元素。
【示例】代码如下:
for index, value in enumerate(tup, start=1):
print(f'第{index}个元素的值:', value)
''' 运行结果如下
第1个元素的值: red
第2个元素的值: green
第3个元素的值: blue
第4个元素的值: yellow
第5个元素的值: black
'''
元组的运算
元组拼接
定义一个元组供下面示例使用:
tup1 = ('red', 'green', 'blue', 'yellow', 'black')
tup2 = (1, 2, 3, 4, 5)
元组的元素是不允许被修改和删除,但是可以连接组合,以及使用del删除。
print('tup1 + tup2结果为:', tup1 + tup2)
'''运行结果如下
tup1 + tup2结果为: ('red', 'green', 'blue', 'yellow', 'black', 1, 2, 3, 4, 5)
'''
元组比较
定义一个元组供下面示例使用:
tup1 = (1, 2, 3, 4, 5)
tup2 = (5, 4, 3, 2, 1)
print('tup1和tup2比较的结果:', tup1 == tup2)
print('tup1和tup2排序后比较的结果:', sorted(tup1) == sorted(tup2))
''' 运行结果如下
tup1和tup2比较的结果: False
tup1和tup2排序后比较的结果: True
'''
温馨提示:跟列表一样顺序不一样都不能算元组相同,也需要先排序,而且元组存在不同类型的元素变量时不能进行排序。
元组判断
配合成员运算符in判断元素是否存在。
【示例】代码如下:
tup = ('apple', 'banana', 'pear')
if 'banana' in tup:
print('banana在元组tup中')
else:
print('banana不在元组tup中')
''' 运行结果如下
banana在元组tup中
'''
元组进阶使用
重新赋值进行覆盖修改元素
所谓元组的不可变指的是元组所指向的内存中的内容不可变,我们可以重新赋值的元组tup,绑定到新的对象了,不是修改了原来的对象。
【示例】代码如下:
tup = ('a', 'b', 'c', 'd')
print('tup的内存地址:', id(tup), 'tup的值:', tup)
tup = ('a', 'e', 'c', 'd')
print('重新赋值后tup的内存地址:', id(tup), '重新赋值后tup的值:', tup)
''' 运行结果如下
tup的内存地址: 4311809248 tup的值: ('a', 'b', 'c', 'd')
重新赋值后tup的内存地址: 4311809088 重新赋值后tup的值: ('a', 'e', 'c', 'd')
'''