python元组知识点
在这里,我将用最直白,最不绕弯子的方式,给大家提供元组的知识点讲解。所有的内容都是我自己的理解和总结,保证不抄袭,完整有效。希望看完这篇内容,你能更了解元组,来不及看完也没关系,收藏起来慢慢看哇!
好了,废话不多说,咱们开学→
一、定义
元组是序列的一个类型,具备有序、不可变等特点,格式就是用小括号()包裹元素,元素可以是任意数据类型(数字、字符串、列表、元组等)。
元组的几个创建方式如下:
"""创建方式""" x1=(1,2,"abc",[3,4]) #标准括号创建 x2=1,2,3,4 #省略括号创建(注意:逗号才是元组的核心标志) x3=(1,) #单个元素的元组,必须要在元素后面增加一个逗号,否则x3=(1),只是整数二、性质
1.不可变性
这里的不可变,指元组的直接元素不能被改变和增加,但如果元素是可变对象那么也能改变,举个例子⬇️
x=(1,2,3) print(x.append(4)) #报错 x=([1,2,3]) print(x.append(4)) print(x) #[1,2,3,4] x=(1,[2,3],4) print(x[1].append(5)) print(x) #(1,[2,3,5]4)2.有序性
元组和列表一样,都具备下标索引值,每个元素有自己的索引值
"""这是一个包含各种元素的元组""" x=(1,"abc",[2,3],4)每个元素对应的索引值如下:
| 元素 | 1 | abc | [2,3] | 4 |
| 正向索引对应的下标索引值 | 0 | 1 | 2 | 3 |
| 反向索引对应的下标索引值 | -4 | -3 | -2 | -1 |
3.允许重复元素
一个元组里面可以同时有多个相同的元素。
x=(1,2,1,3,4)4.支持任意类型混合存放
一个元组里面可以同时有字符串、列表等序列类型存在。
x=(1,"abc",[2,3],4)5、可哈希
简单来说,就是可调用hash(对象),且不报错,就是可哈希对象。
hash((1,2,3)) #不报错,纯不可变元组可哈希 hash((1,[2,3])) #报错,有可变对象的元组不可哈希三、下标与切片(和列表方法相同)
1.下标
利用下标索引值取相应的元素
x=(10,20,30,40) print(x[0]) #10 print(x[-1]) #40 print(x[7]) #取值大于最大下标索引值,报错2.切片
学好切片知识,相当于学好一半以上的元组和列表啦~
切片格式如下⬇️
x[start:end:step]切片的操作生成的是新的元组,而不是改变原元组(切记!元组是不可变对象),当然列表也一样,原列表也不会受到影响。
以防大家还没学过列表的切片方法,这里再整理一下。
x=(1,2,3,4,5,6) print(x[0:2]) #(1,2,3) print(x[0:5:2]) #(1,3,5)取步长为2的元组 print(x[:2]) #(1,2,3)冒号前面省略,就是从头开始取值 print(x[2:]) #(3,4,5,6)当然冒号后面省略也是一个意思 print(x[:]) #(1,2,3,4,5,6)只有一个冒号就是全选^_^ print(x[::-1]) #(6,5,4,3,2,1)步长为-1的话就是将整个元组反转切片是一个非常方便的方法,大家要好好学呀~
四、元组的运算
虽然元组是不可变对象,但我们依旧可以利用运算符来生成新元组。
1.拼接运算符(+)
x=(1,2) y=(3,4) z=x+y print(z) #(1,2,3,4)2.重复运算符(*)
x=(1,2) y=x*3 print(y) #(1,2,1,2,1,2)3.判断运算符(in/not in)
判断运算符可判断元素是否存在元组中
x=(1,2,3) 3 in x #True y=(4,5,6) 3 not in y #True4.比较运算符(<、<=、==、>=、>、!=)
元组比较大小本质是从第一个元素开始比较,直到区分出两个元组的大小。但前提是两个元组之间的元素必须是可互相比较的类型,若类型不兼容则会直接报错。
①元组按ASCII 编码值逐字符比较
一般来说我们都只比较数字和英文字母:数字编码 < 大写英文字母 < 小写英文字母
print(("apple",)<("banana",)) #True print(("A",999)<("B",1)) #True,第一项相互比较能出结果就不会比较第二项 print(("A",)<("a",)) #True②元组按长短比较
若两个元素的前几个字母相同,那么就比较元素的长短。
print(("He",)<("Hello",)) #True,两个元素字母相同的情况下,元素越短越小若两个元组的前几个元素相同,那么就比较元组的长短。
print((1,2)<(1,2,"ab")) #True,元组越短越小③不能跨类型比较
print((10,)<("10",)) #报错,两个不同类型的元素之间不能比较大小④嵌套型元组比较
自动递归拆开内层元组,逐个元素之间比较
x=(1,2,(3,4)) y=(1,2,(3,5)) print(x<y) #True⑤特殊的布尔值
众所周知,布尔的本质是int类型,True=1,False=0,所以布尔的比较不是字母比较大小,而是比较数字0和1。
print((False,)<(1,)) #True print((False,)<(True,)) #True(0<1) print((0,)<(True,)) #True五、元组的内置函数
| 序号 | 函数 | 作用 | 示例 |
| ① | len(tuple) | 获取元组的长度 | |
| ② | max(tuple) | 返回元组可比元素的最大值 | |
| ③ | min(tuple) | 返回元组可比元素的最小值 | |
| ④ | sum(tuple) | 数值元组求和 | |
| ⑤ | sorted(tuple) | 返回列表,并自动排序,不改变原元组 | |
六、元组自带方法
受元组内部元素不可变的影响,元组不易改动,因此元组所含的方法也相对较少。
| 序号 | 方法 | 作用 | 示例 |
| ① | tuple.count(x) | 统计元组内元素x的出现次数 | |
| ② | tuple.index(x, start, end) | 查找元素x第一次出现的下标索引值,若找不到x则报错 | |
七、元组的解包
把元组中每一个元素,一次性赋值给多个变量,这个过程叫元组解包。
元组解包实现的基础前提是——变量数量等于元组个数,两者一一对应。
1.经典解包
比较常用的就是两个变量之间的交叉互换。
x=2 y=3 x,y=y,x print(x,y) #3 2此过程的理解就是,我们先将x,y打包成元组(2,3),接着再解包赋值给y,x
2.“废弃变量”的解包
通常情况下,我们用“_”来代替不需要赋值的变量,我们将这个变量称为废弃变量。
x=(10,20,30) a,_,c=x print(a,c) #10 303.不定长元组解包
当一个元组足够长时,我们一般无法知晓元祖的长度,和元素的个数,这种情况下我们用,一部分变量 +*变量接收剩余所有元素,生成结果是列表。
x=(1,2,3,4,5,6) one,*t,last=x print(t) #[2,3,4,5] print(one) #1注意:一个解包语句只能有一个*,若出现两个及两个以上,则代码报错。
当然,在特定情况下,赋值对象也可以只有一个*变量
x=(1,2,3) print(*x) #1 2 34.嵌套元组解包
根据元组的嵌套规律,拆解应赋值的元素即可
x=(1,2,(3,4)) a,b,(c,d)=x print(a,b,c,d) #1 2 3 4八、类型转换
在数据类型中,大多数类型之间都是可以相互转换的。
1.元组→其他
| 序号 | 转换类型 | 方法 | 示例 |
| ① | 元组→列表 | list() | |
| ② | 元组→字符串 | str() | |
| ③ | 元组→字符串 | "".join () | |
| ④ | 元组→集合 | set() | |
| ⑤ | 元组→字典 | dict() | |
2.其他→元组
| 序号 | 转换 | 方法 | 示例 |
| ① | 字符串→元组 | tuple() | |
| ② | 列表→元组 | tuple() | |
| ③ | 集合→元组 | tuple() | |
| ④ | range对象→元组 | tuple() | |
| ⑤ | 字典→元组 | tuple() | |
总结
好了,以上就是全部的元组方法了,如果你提前学习了列表的知识点,会发现元组的知识和列表的知识实质上大差不差,但元组和列表并不能混为一谈。
不论你是学生、打工人、忙忙碌碌的陌生人,我都希望你已经掌握这个小小的知识点,希望本博客能祝你一臂之力,给你提供到一点点帮助。
最后,本博客可能未及时发现一些错误或漏洞,如果你发现了这些错误,感谢及时纠错!!!
