第1部分python基础老师万恶之源set集合深浅拷贝以及知识点补充_第1页
第1部分python基础老师万恶之源set集合深浅拷贝以及知识点补充_第2页
第1部分python基础老师万恶之源set集合深浅拷贝以及知识点补充_第3页
第1部分python基础老师万恶之源set集合深浅拷贝以及知识点补充_第4页
第1部分python基础老师万恶之源set集合深浅拷贝以及知识点补充_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

07.万恶之源-set集合,首先关于int和str在之前的学习中已经讲了80%以上了所以剩下的自己看一看就可以了.lili"李嘉诚""麻花藤""黄海峰"s=li"黄花大闺女s=li=li=[11,22,33,forein[22,44]for的运行过程.会有一个指针来记录当前循环的元素是哪一个,一开始这个指针指向第0个然后获取到第0个元素紧接着删除第0个这个时候原来是第一个的元素会自动的变成第0个.然后指针向后移动一次,指向1元素.这时原来的1已经变成了0,也就不会被删除了.li=li=[11,22,33,foriinrange(0,len(li)):delli[i]结果结果i=01,2删除的时候li[0]被删除之后.后面一个就变成了第0个以此类推当i=2的时候.list中只有一个元素但是这个时候删除的是第2经过分析发现.循环删除都不行.不论是用del还是用remove.都不能实现.那么pop呢forforelin pop[11,22]foriinrange(0,len(li)):循环len(li)次..li=li=[11,22,33,del_li=[]foreinli:foreindel_li:注意:由于删除元素会导致元素的索引改变,所以容易出现问题.尽量不要再循环中直接去删除元素.可以把要删除的元素添加到另一个集合中然后再批量删除.dicdic=dict.fromkeys(["jay","JJ"],""麻花藤{'jay':麻花藤'JJ'麻花藤前面列表中的每一项都会作为key,后面列表中的内容作为value生成dict好了.注意:dicdic=dict.fromkeys(["jay","JJ"],["""麻花藤 {'jay':','麻花藤', '],'JJ':','麻花藤', 代码中只是更改了jay那个列表但是由于jay和JJ用的是同一个列表所以前面那个改了后dicdic'k1''alex''k2''wusir''s1''金老板forkinif'k'indel#dictionarychangedsizeduringtion,那怎么办呢?把要删除的元素暂时先保存在一个list中,然后循环list,dicdic'k1''alex''k2''wusir''s1''金老板'}dic_del_list=[]删除key中带有'k'forkinif'k'inforelindic_del_list:deldic[el]元组=>列 列表=>元 0,'',None,[],(),{},set(False二.setset集合是python的一个基本数据类型.一般不是很常用.set中的元素是不重复的.无序的.里面的元素必须是可hash的(int,str,tuple,bool),我们可以这样来记.set就是dict类型的数据但是不保存value,只保存key.set也用{}表示注意:set集合中的元素必须是可hash的,但是set本身是不可hash得.set是可变的set1set11','alex',2,True,[1,2,3]set21','alex',2,True,{1:2}}set31','alex',2,True,(1,2,[2,3,4])}set中的元素是不重复的,且无序的ss=",", ',给listlst455"哈哈"45'哈哈'lst=list(set(lst)) 把list转换成set,然后再转换回listss=",',#重复的内容不会被添加到sets=",', #迭代更"," ss=",',"," items.pop()随机弹出一个")#s.remove("马虎疼"不存在这个元素清空set集合.需要注意的是set集合如果是空的打印出来是set#set集合中的数据没有索引也没有办法去定位一个元素所以没有办法进行直接修改#s=",',"," set是一个可迭代对象所以可以进行forforelins1s1 ", ""皮长山s2"刘科长","冯乡长","皮长山print(s1&s2)#{'皮长山'}print(ersection(s2))皮长山'}printprint(s1|s2)#{'刘科长','冯乡长', ','皮长山', #{'刘科长','冯乡长', ','皮长山', print(s1s2) # ', print(s1^s2)#两个集合中单独存在的数据{'冯乡长', ','刘科长', print(s1.symmetric_difference(s2))#{'冯乡长', ','刘科长', s1= ", s2 ", ""皮长山print(s1<s2)#set1是set2的子集吗?Trueprint(s1s2)set1是set2的超集吗Falseset集合本身是可以发生改变的是不可hash的我们可以使用frozenset来保存数据.frozenset是不可变的.也就是一个可哈希的数据类型ss=", ""皮长山""长跪dic{s:'123'这个不是很常用了解一下就可以了三.深浅拷贝lst1lst1"金毛狮王""紫衫龙王""白眉鹰王""青翼蝠王"]lst2=lst1['金毛狮王紫衫龙王白眉鹰王青翼蝠王杨逍['金毛狮王紫衫龙王白眉鹰王青翼蝠王杨逍dic1={dic1={"id":123,"name":" dic2=dic1dic1['name']=" {'id':123,'name': {'id':123,'name': {'id':123,'name': {'id':123,'name': 对于list,set,dict来说,直接赋值.其实是把内存地址交给变量.并不是一份内容.所以.lst1的内存指向和lst2是一样的.lst1改变了,lst2也发生了改变lst1lst1 ""杜海涛lst2=lst1.copy()print(id(lst1),两个lst完全不一样内存地址和内容也不一样lst1 ""杜海涛lst2=lst1.copy()print(id(lst1[3]),"["麻花藤"", 杜海涛 杜海涛',['麻花藤', ',',['麻花藤', ',无敌是多磨寂寞无敌是多磨寂寞浅拷贝只会拷贝第一层第二层的内容不会拷贝所以被称为浅拷贝lst1= ","杜海涛 ",["麻花藤", ", lst2=copy.d

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论