文章目录
1.元组
1.1 元组的简介
- 元组的概念
元组(Tuple)是一组有序的、不可变的数据集合(不可改的List)
在定义的时候,主要元组用的是小括号(),是可以通过下标进行访问的,也可以通过切片进行访问
# 元组的创建和访问
tuple01 = (1,2,3,4,5,6)
print(tuple01[0]) # 通过下标访问第一个元素:1
print(tuple01[1:5]) # 通过切片访问第二个到第五个元素 (2, 3, 4, 5)
1.2 元组的创建
(1) 常规元组的创建
一开始就得全部声明,因为后面是不可以更改的
#常规元组创建的方法
tuple01 = (11,22,33,44,55) # 元组的创建
tuple02 = () # 空元组也是可以创建的
(2) 单个元组的创建
如果创建单元素的元组不能直接写成tupel03 = (11),因为这种创建方式默认创建的整型,那么怎么创建单元素的元组呢?
我们需要在单个元素后面添加一个逗号,这样就能够创建单个元素的元组了:
# 创建单元素元组
my_tuple = (11,) # 单元素元组一定要加逗号
(3) 元组的拼接
元组虽然不可以修改,但是支持多个元组的拼接;
# 元组的拼接
tuple01 = (11,22,33,44,55)
tuple02 = (1,3,5,7)
tuple03 = tuple01 + tuple02
print(tuple03)
#(11, 22, 33, 44, 55, 1, 3, 5, 7)
1.3 元组常用方法
(1) 元组中可以用的常用方法
- 整体赋值操作
# 元组使用整体赋值运算符
tuple01 = (11,22,33,44)
tuple02 = tuple01
- 拼接操作
# 元组的拼接
tuple01 = (11,22,33,44,55)
tuple02 = (1,3,5,7)
tuple03 = tuple01 + tuple02
print(tuple03)
#(11, 22, 33, 44, 55, 1, 3, 5, 7)
- 打印指定遍数
tuple01 = (11,22)
print(tuple01 * 3)
#(11, 22, 11, 22, 11, 22)
- 求元组的长度
# 元组使用求长度运算符
tuple01 = (11,22,33)
print(len(tuple01)) # 3
- 是否包含
# 元组使用是否包含运算符
tuple01 = (11,22,33)
print("是否包含11:",11 in tuple01)
#是否包含11: True
- 求最值、求和
# 元组的计算
tuple01 = (11,22,33,44,9,6,5)
print(max(tuple01))
print(min(tuple01))
print(sum(tuple01))
- 查找(元组不可以用find()函数查找)
# 元组的查找
tuple01 = (-11,11,13,44,999,66,2)
print(tuple01.index(11))# 返回值是索引的位置:1
#如果元组里有相同的元素,返回值是最前面元素的索引值。
tuple01 = (-11,11,13,11,999,66,2)
print(tuple01.index(11))# 返回值:1
- 统计元素的次数
#统计出现的次数
tuple01 = (-11,11,13,44,999,66,11)
print(tuple01.count(11)) # 2
#元组tuple01中11出现在的次数为:2
1.4 元组不可以使用的方法
元组不可以直接使用列表中的添加、插入、删除方法,但是注意:虽然元组里直接的元素没法改,但是元组里嵌套了list的话,还是可以非常方便的增加、删除、修改list元素的。
# 修改元组中嵌套的列表元素
tuple01 = (11,22,33,44,[44,55,66])
tuple01[4].append(77)
tuple01[4].remove(55)
tuple01[4].extend([88,99])
print(tuple01)
1.5 特殊方法
- 元组的删除
元组里的单个元素是无法删除的,但是可以用del方法,把整个元组删除
# 元组的删除
tuple01 = (11,22,33)
del tuple01
- 元组的排序
用于排序的sort()方法,和反转排序的reverse()方法,改变了元素的存储位置所以不可用于元组的排序,但是临时排序sorted()方法就可以,因为它并没有改变元素的原始存储位置,只是用于排序输出
tuple01 = (-11,1,13,44,999,66,2)
print(sorted(tuple01))
#[-11, 1, 2, 13, 44, 66, 999]升序排列
1.6 元组解包(拆包)
- 元组拆包指将元组当中的每一个元素都赋值给一个变量,元组元素的数量与变量的数量相同。
my_tuple = (1, 2, 3, 4, 5, 6)
#元组的拆包
a,b,c,d,e,f = my_tuple
print(a) #可以单独取值
print(b) #可以单独取值
print(a,b,c,d,e,f) # 也可以这样一起取值
#
1
2
1 2 3 4 5 6
- 在对一个元组拆包的时候,变量的数量和元组中元素的数量要把持一致
# 错误示例
my_tuple = (1, 2, 3, 4, 5,6) #元组里6个元素
a,b,c,d,e = my_tuple #变量的数量(5个) 和 元组中元素的数量不一样。
print(a)
print(a,b,c,d,e)
#不管是打印一个值,还是打印多个都会报错
#报错:ValueError: too many values to unpack (expected 6)(需要打开的值太多,预期6个),这个报错很明显,我们可以看到拆包的变量只有5个,而元组内的元素数量有6个,5个变量接收6个值,变量不够呀,所以会报错。
# 正确示例
my_tuple = (1,2,3,4,5,6)
a,b,c,d,e,f = my_tuple #变量的数量 和 元组中元素的数量一样。
print(a)
print(a,b,c,d,e)
- 如果变量和元素不一致,就可以在变量前面加上一个* ,这样会获取元组中剩余的元素,以列表的形式返回;如果打印的时候给变量前加一个*,返回值就不会列表形式;
tuple1 = (1,2,3,4,5)
a,*b = tuple1
print(a,b) #返回值是列表形式
print(a,*b) # 返回值非列表形式
# 打印结果:
1 [2, 3, 4, 5]
1 2 3 4 5
##
list1 = [1, 2, 3, 4,5]
a, *b, c = list1
print(a, b, c) # 1 [2, 3, 4] 5
1.7练习题
案例1:
输入一个数字,转换成中文数字,比如:1234567890转换成壹贰叁肆伍陆柒捌玖零
# 定义汉字数字元组
tuple_chinese = ('零','壹','贰','叁','肆','伍','陆&