这篇文章是连接着上篇的文章的,这篇文章是对python集合、元组、字典进行详解(补个大纲,怕读友们不知道这是讲啥的,我尽量弄的条理清晰)
1.4 集合的使用方法
#集合重复的只留一个;集合是无序的
x = {1, 2, 3, 4, 5, 6, 2, 3, 6}
print(x) #结果为{1,2,3,4,5,6}
集合的运算
set1&set2 交集
set1|set2 并集
set1-set2 set1集合中有的,set2集合中没有的
set2-set1 set2集合中有的,set1集合中没有
1. 交集:使用“&”操作符,返回两个集合中共有的元素。
set1 = {1, 2, 3, 4, 5}
set2 = {1, 3, 6, 7, 8}
print(set1 & set2) #运行结果为 {1, 3}
2. 并集:使用“|”操作符,返回两个集合中所有不重复的元素。
set1 = {1, 2, 3, 4, 5}
set2 = {1, 3, 6, 7, 8}
print(set1 | set2) #运行结果为 {1, 2, 3, 4, 5, 6, 7, 8}
3. 差集:使用“-”操作符,返回第一个集合中存在但第二个集合中不存在的元素。
set1 = {1, 2, 3, 4, 5}
set2 = {1, 3, 6, 7, 8}
print(set1 - set2) #运行结果为 {2, 4, 5}
4. 对称差集:使用“^”操作符,返回两个集合中不同的元素。
set1 = {1, 2, 3, 4, 5}
set2 = {1, 3, 6, 7, 8}
print(set1 ^ set2) #运行结果为 {2, 4, 5, 6, 7, 8}
以上是几种常用的集合方法
1.5 元组的使用方法
空元组
yz = ()
print(type(yz)) #输出结果为 <class 'tuple'>
tu = (1)
yz = (1,)
print(type(tu)) #<class 'int'>
print(type(yz)) #<class 'tuple'>
元组拆包
拆包:元组可以同时赋值给多个变量,只要变量个数不超过元组长度,变量前面加上*则可以将多余元素都接收,并返回为一个列表
下面给大家演示一个简单的示例:
tu = ("张三", "李四", "王五")
zs, ls, ww = tu
print(zs) #结果为:张三
print(ls) #结果为:李四
print(ww) #结果为:王五
tu = ("张三", "李四", "王五")
zs, *ls= tu
print(zs) #结果为:张三
print(ls) #结果为:['李四', '王五']
这里的拆包就是把一个整体拆包为几个单独的个体,和拼接刚好相反
元组的迭代:可以遍历元组中的每个元素。
t = (1, 2, 3)
for i in t:
print(i) # 输出: 1、2、3
这个是通用的方法,字符串、列表等也可以使用这个方法
成员资格(in):使用in关键字检查元组中是否存在某个元素
t = (1, 2, 3)
print(1 in t) # 输出: True
查看元素是否在元组里,和上面元组迭代一样,也是通用方法
1.6 字典的使用
认识字典
dict 字典
字典的元素使用{}包裹,里面的元素是一个个的键对值
zs:"张三" 键:值
特点:键和值的映射结构
键必须是一个不可变的数据类型,且唯一,如果重复则会覆盖:字符串,数值,元组,列表是不可变的
;值是任意的数据类型
#创建一个字典
cls18 = {"zs": "张三", "ls": "李四", "ww": "王五"}
print(cls18, type(cls18)) #结果为 {'zs': '张三', 'ls': '李四', 'ww': '王五'} <class 'dict'>
print(cls18["zs"]) #结果为 张三
将其他数据类型转化为字典类型(这个方法是通用的,也可以转化为其他数据类型)
cls17 = dict(zs="张三", ls="李四")
print(cls17, type(cls17)) #结果为 {'zs': '张三', 'ls': '李四'} <class 'dict'>
xl = [(1, "张三"), (2, "李四")]
zy = dict(xl)
print(zy, type(zy)) #结果为 {1: '张三', 2: '李四'} <class 'dict'>
字典的查找
dict = {"zs": "张三", 2: "李四"}
#键存在则返回值,不存在则返回None
print(dict.get("zs")) #结果为 张三
#使用get当键不存在时还可以自定义返回内容
print(dict.get("ww"),"自定义返回内容") #结果为 None 自定义返回内容
这里使用的是get()方法,还可以用键来查找 ,但用这种方法有个弊端,如果键不存在于字典中,则会引发 KeyError
异常,为了避免 KeyError
异常,可以使用 get()
方法来安全地获取字典中键的值。如果键不存在于字典中,则返回指定的默认值。
字典的修改
"""
dict[key]=新值,若存在,修改原来的值,不存在,则添加新值
dict.setdefault(key,值)存在key,返回value(相当于查找),不存在,新增键值对
dict.update({k1:v1,k2:v2})存在,修改value;不存在,增加键值对;可以批量修改和增加
"""
cls18 = {"zs": "张三", "ls": "李四", "ww": "王五"}
#dict[key]='新值'
#键存在时,修改对应键的值
cls18["zs"] = 18
print(cls18) #结果为 {'zs': 18, 'ls': '李四', 'ww': '王五'}
#键不存在时,添加键值对
cls18[1] = 18
print(cls18) #结果为 {'zs': 18, 'ls': '李四', 'ww': '王五', 1: 18}
这个是默认修改法,使用键直接赋值
setdefault方法的使用
cls18 = {"zs": "张三", "ls": "李四", "ww": "王五"}
#键不存在时则添加键值对
print(cls18.setdefault("xl", 18))
print(cls18) # 18 结果为 {'zs': '张三', 'ls': '李四', 'ww': '王五', 'xl': 18}
#键存在时字典内容不变
print(cls18.setdefault("zs", 18))
print(cls18) # 张三 结果为 {'zs': '张三', 'ls': '李四', 'ww': '王五', 'xl': 18}
update方法的使用(这个方法相当于结合了前面那两个方法)
cls18 = {"zs": "张三", "ls": "李四", "ww": "王五"}
#键不存在时添加键值对
cls18.update({"zy": "质疑"})
print(cls18) #结果为 {'zs': '张三', 'ls': '李四', 'ww': '王五', 'zy': '质疑'}
#键存在时则修改键对应的值
cls18.update({"zs": "注释"})
print(cls18) #结果为 {'zs': '注释', 'ls': '李四', 'ww': '王五', 'zy': '质疑'}
请注意,如果你要修改字典中的键,那么需要确保新的键在字典中是唯一的,否则会引发 KeyError
异常
如果有需要补充的私信我或者评论通知我,我会加上