|
目录:一、集合思考:我们目前接触到了列表、元组、字符串三个数据容器了。基本满足大多数的使用场景为何又需要学习新的集合类型呢?通过特性来分析:(1)列表可修改、支持重复元素且有序(2)元组、字符串不可修改、支持重复元素且有序大家有没有看出一些局限?局限就在于:它们都支持重复元素如果场景需要对内容做去重处理,列表、元组、字符串就不方便了而集合,最主要的特点就是:不支持元组的重复(自带去重功能)、并且内容无序1.集合的定义基本语法:#定义集合字面量{元素,元素,......,元素}#定义集合变量变量名称={元素,元素,......,元素}#定义空集合变量名称=set() 和列表、元组、字符串等定义基本相同:列表使用[ ]元组使用()字符串使用" "集合使用{ } 2.集合的常用操作首先,因为集合是无序的,所以集合不支持:下标索引访问但是集合和列表一样,是允许修改的,所以我们来看看集合的修改方法编号操作作用1集合.add(元素)集合内添加一个元素2集合remove(元素)移除集合内指定的元素3集合.pop()从集合中随机取出一个元素4集合.clear()将集合清空5集合1.difference(集合2)得到一个新集合,内含2个集合的差集原有的2个集合内容不变6集合1.differenceupdate(集合2)在集合1中,删除集合2中存在的元素集合1被修改,集合2不变7集合1.union(集合2)得到1个新集合,内含2个集合的全部元素原有的2个集合内容不变8len(集合)得到一个整数,记录了集合的元素数量(1)添加新元素语法:集合.add(元素)将指定元素,添加到集合内结果:集合本身被修改,添加了新元素my_set={"Hello","World"}my_set.add("bite")print(my_set)#结果:{'World','bite','Hello'}(顺序可能会变)(2) 移除元素语法:集合.remove(元素),将指定元素,从集合内移除结果:集合本身被修改,移除了元素my_set={"Hello","World"}my_set.remove("World")print(my_set)#结果:{'Hello'} (3) 从集合中随机取出元素语法:集合.pop(),功能,从集合中随机取出一个元素结果:会得到一个元素的结果。同时集合本身被修改,元素被移除my_set={"Hello","World"}element=my_set.pop()print(my_set)#结果:{'Hello'}print(element)#结果:World(4) 清空集合语法:集合.clear(),功能,清空集合结果:集合本身被清空my_set={"Hello","World"}my_set.clear()print(my_set)#结果:set() (5)取出2个集合的差集语法:集合1.difference(集合2),功能:取出集合1和集合2的差集(集合1有而集合2没有的)结果:得到一个新集合,集合1和集合2不变set1={1,2,3}set2={1,5,6}set3=set1.difference(set2)print(set3)#结果:{2,3}print(set2)#结果:{1,5,6}print(set1)#结果:{1,2,3}(6) 消除2个集合的差集语法:集合1.difference_update(集合2)功能:对比集合1和集合2,在集合1内,删除和集合2相同的元素结果:集合1被修改,集合2不变set1={1,2,3}set2={1,5,6}set1.difference_update(set2)print(set1)#结果:{2,3}print(set2)#结果:{1,5,6}(7)2个集合合并语法:集合1.union(集合2)功能:将集合1和集合2组合成新集合结果:得到新集合,集合1和集合2不变set1={1,2,3}set2={1,5,6}set3=set1.union(set2)print(set3)#结果:{1,2,3,5,6}print(set1)#结果:{1,2,3}print(set2)#结果:{1,5,6}二、字典思考:老师有一份名单,记录了学生的姓名和考试总成绩,现在需要将其通过Python录入至程序中,并可以通过学生姓名检索学生的成绩,由此引入了字典,使用字典可以用key取出Value的操作1.字典的定义字典的定义,同样使用{},不过存储的元素是一个个的:键值对,如下语法:#定义字典字面量{key:value,key:value,......,key:value}#定义字典变量my_dict={key:value,key:value,......,key:valuel}#定义空字典my_dict={}#空字典定义方式1my_dict=dict()#空字典定义方式2注意: 字典内Key不允许重复,重复添加等同于覆盖原有数据#定义重复Key的宇典my_dict1={"王力鸿":99,"王力鸿":88,"林俊节":77}print(f"重复key的字典的内容是:{my_dict1}")#结果:重复key的字典的内容是:{'王力鸿':88,林俊节':77}2.字典数据的获取字典同集合一样,不可以使用下标索升但是字典可以通过Key值来取得对应的Value#语法,字典[Key]可以取到对应的valuestu_score={"李四":99,"张三":88,"王二麻子":77}print(stu_score["李四"])#结果:99print(stu_score["张三"])#结果:88print(stu_score["王二麻子"])#结果:773.字典的嵌套字典的Key和Value可以是任意数据类型(Key不可为字典)那么,就表明,字典是可以嵌套的需求如下:记录学生各科的考试信息stu_score_dict={"王力鸿":{"语文":77,"数学":66,"英语":33},"周杰轮":{"语文":88,"数学":86,"英语":55},"林俊节":{"语文":99,"数学":96,"英语":66}}print(f"学生的考试信息是:{stu_score_dict}")#结果:学生的考试信息是:{'王力鸿':{'语文':77,'数学':66,'英语':33},'周杰轮':{'语文':88,'数学':86,'英语':55},'林俊节':{'语文':99,'数学':96,'英语':66}}从嵌套字典中获取数据:score=stu_score_dict["周杰轮"]["语文"]print(f"周杰轮的语文分数是:{score}")#结果:周杰轮的语文分数是:884.字典的常用操作编号操作作用1字典[Key]获取指定Key对应的Value值2字典[Key]=Value添加或更新键值对3字典.pop(Key)取出Key对应的Value并在字典内删除此Key的键值对4字典.clear()清空字典5字典.keys()获取字典的全部Key,可用于for循环遍历字典6len(字典)计算字典内的元素数量(1)新增元素语法:字典[Key]=Value,结果:字典被修改,新增了元素my_dict1={"王力鸿":88,"林俊节":77}#新增,张学油的考试成绩my_dict1['张学油']=66print(my_dict1)#结果:{'王力鸿':88,'林俊节':77,'张学油':66}(2)更新元素语法:字典[Key]=Value,结果:字典被修改,元素被更新注意:字典Key不可以重复,所以对已存在的Key执行上述操作,就是更新Value值my_dict1={"王力鸿":88,"林俊节":77}my_dict1['王力鸿']=66print(my_dict1)#结果:{'王力鸿':66,'林俊节':77}(3)删除元素语法:字典.pop(Key),结果:获得指定Key的Value,同时字典被修改,指定Key的数据被删除my_dict1={"王力鸿":88,"林俊节":77}value=my_dict1.pop("王力鸿")print(value)#结果:88print(my_dict1)#结果:{'林俊节':77}(4)清空字典语法:字典.clear(),结果:字典被修改,元素被清空my_dict1={"王力鸿":88,"林俊节":77}my_dict1.clear()print(my_dict1)#结果:{}(5)获取字典的全部Key语法:字典.keys(),可用于for循环遍历字典#获取全部的keymy_dict={"周杰轮":99,"王力鸿":88,"林俊节":77}keys=my_dict.keys()print(f"字典的全部keys是:{keys}")#结果:字典的全部keys是:dict_keys(['周杰轮','王力鸿','林俊节'])#遍历字典#方式一:通过获取到全部的key来完成遍历forkeyinkeys:print(f"字典的key是:{key}")print(f"字典的value是:{my_dict[key]}")#方式二:直接对字典进行for循环,每一次循环都是直接得到keyforkeyinmy_dict:print(f"字典的key是:{key}")print(f"字典的value是:{my_dict[key]}")5.字典的特点经过上述对字典的学习,可以总结出字典有如下特点:(1)可以容纳多个数据(2)可以容纳不同类型的数据(3)每一份数据是KeyValue键值对(4)可以通过Key获取到Value,Key不可重复(重复会覆盖)(5)不支持下标索引(6)可以修改(增加或删除更新元素等)(7)支持for循环,不支持while循环本次内容就到此啦,欢迎评论区或者私信交流,觉得笔者写的还可以,或者自己有些许收获的,麻烦铁汁们动动小手,给俺来个一键三连,万分感谢!
|
|