文章目录
七、元组和字典
1、可变对象和不可变对象
- 例:a = 3,a是一个变量,而3就是一个对象,对象中保存了三个数据,id(地址),type(类型),value(值)
- 可变对象和不可变对象指的就是对象中的值是否可以改变
- 可变对象:例如列表,字典等;不可变对象:例如元组,字符串等
- (补充:之前学过的==,!=比较的是值是否相等,is 和 is not比较的是id是否相等
2、元组
2.1 元组的基本定义
- 定义:元组类型是tuple,属于不可变序列,使用()来创建
(注意元组的创建至少要包含一个,否则无法创建成功;并且可省略()去表示)
![]()
2.2 元组的解包
- 用对应数量的变量可以获取对应的元组数据(若变量不够会报错)
- 若变量不够或想要一个变量获取多个元组的数据,可用以下方法
(一次只能有一个变量前加)
3、字典
3.1 字典的基本定义
- 定义:字典使用的是一种叫映射(mapping)的数据结构,它与列表类似,都是用来存储数据,但字典的查询性能很强,而列表相对的存储性能强
- 结构:字典里的元素(value)都有一个与之相对应的名字(key),称之为键值对(key-value)结构;字典包含多个键值对,而每一个键值对又称为一项(item),我们可以通过key快速查找到value
- 语法:字典用{}来创建,形式为{key:value,key:value,……},字典的value任意且可变,而key则任意不可变,且key不能重复否则后面的会替换前面的
(字典通过key来获取数据)
3.2 字典的使用
- 使用dict()函数来创建函数:字典除了直接用{key:value,……}来创建也可以用dict(key=value,……)函数来创建
dict()函数可以将一个包含双值子序列的序列转化为字典:双值序列,指序列中只有两个值,例如’sk’,(1,2),[1,2]等;子序列,序列中的元素也是个序列,里面这个序列就叫子序列
![](https://img-blog.csdnimg.cn/20201111104424231.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2Nqempo,size_16,color_FFFFFF,t_70#pic_center)
- (使用字典[key]来获取字典中的元素时,key要加上’ ',否则系统会把它当变量;若key不存在则会报错)
- get(key,[default])方法:这个方法也可以用来获取字典中的数据,若不设置[default],则会返回None;若设置[default],获取不到key,则会返回这个值
- 修改字典:字典[key]=value
(若输入字典中不存在的key和value则会直接添加进字典中)
- setdefault(key,value)方法:若字典中已经有这个key,则返回key的值对字典不做任何操作;若key不存在,则会在字典中添加这个key-value
- update():方法: 将其他字典里的数据添加进原字典
- 删除key-value方法: del 字典[key]或者 字典.pop(key,[default])(value作为返回值)
- popitem()方法:删除字典中最后一个k- value,并把它作为返回值
- clear()方法:清空字典
3.3 遍历字典
- keys()方法:返回一个序列包含字典中所有的key值
- values()方法:返回一个序列包含字典中所有的value值
- items()方法:返回一个序列包含字典里的所有双值子序列,双值就是每个key和value
(items()方法可以通过赋值给不同变量分别提取字典中的key和value)
3.4 copy()
- 潜复制:x.copy()方法,潜复制两者值相等但对象不同,改变其中一个另一个不变(类似抄作业,你抄了然后改,我是没改的)
(注意如果序列里还有序列,则潜复制不会复制它,就是说里序列两者还是同一个对象,会一起改变)
- 深复制:需要用到copy这个库函数,深复制会将序列及其内部的序列完全复制,成为两个值相同的对象
4、集合
4.1 集合的简介
- 定义:集合的表现形式是set,与列表十分相似
不同点:
o 集合只能存储不可变对象
o 集合中存储的对象是无序的
o 集合中不能出现重复元素 - 语法:使用{}来直接创建集合或用set()来将列表和字典转化为集合
(set()将字典转化为集合时只会保留字典中的key)
4.2 字典的使用
- len():获取集合中元素的数量
- add():给集合添加一个元素
- update():将一个集合中的元素添加到另一个集合中
- pop():随机消去集合中的一个元素,一般是最后一个,并有返回值
- remove():删去指定的集合中的元素
- clear():清空集合
- in 和not in:用来判断元素是否在集合内
4.3 集合的运算
- & 交集运算
- | 并集运算
- - 差集运算
- ^亦或集
- <= 检查⼀个集合是否是另⼀个集合的⼦集
- < 检查⼀个集合是否是另⼀个集合的真⼦集
- >=检查⼀个集合是否是另⼀个集合的超集
- >检查⼀个集合是否是另⼀个集合的真超集