00:00
这个不是炒得比较狠,这个是比较写实,我去看了,还不错,还不错,还有什么西游记,西游记,猪游记,我的天不行,那个不行,我这过不去,过不了沈还有啥西虹市首富,不是不是这个西虹市首富,还有什么再来一个什么好了,孩子好了,然后接下来我让你去清空这个列表,我让你去清空这个列表,我们现在知道有这么个动作叫list,对吧,它可以帮我们清,来拦一下list来走,你运醒一下,你会发现OK,它空了,对吧,但是现在我告诉你不允许用清空啊,我现在告诉你不允许用清空,不用清。
01:00
那怎么办呢?看着先来,先来正常的思路,正常思路我们要把这里面每一个东西删掉,删掉,每一个都要删,那怎么玩呢?是不是很正常的for element in list对吧,然后list remove,这个element是不是就可以了,对吧?这个代码能可能了,对,看着啊,错走,你报错倒是不会,但是他删不干净,这删不干净你看留下的是谁,西游记和天龙八部谁被删了呢?药神和西虹市首富对吧?那为什么会有这样的一个效果,听好啊,这时候我们要去探究一下不循环里面到底做了些什么,这样啊,我们第一次探究,但是我们不会真的把里面扒开给你看啊,我只是大概的说一下它的一个一个一个一个效果啊,一个效果,我们现在看到的for循环,循环list的效果是我们把这里每一个元素都拿出来了,对不对?那么它实际是怎么拿的。看着我们可以。
02:00
可以这样去认为,我们可以这样去认为,它呢是有一个变量叫啥呢?就inex一个变量叫index,在它内部啊,在内部一开始这个index啊,它是零,它是零零是哪啊,是不是我不要神了对吧?是零这个位置来我它标一下啊标一下这是零,这是一,这是二,这是三,对吧,一开始以再走零零的话,就我不是药神对不对,然后再往下走,听好啊,我们暂时先不考虑这个所谓的删除这工作先不考虑它就单纯的负循环做了些什么,我们一开始index等于零,那么这个时候通过下标,通过我们的索引,我能拿到现在的element是什么东西,我不是要神对不对,现在是它好了,那么它循环完了之后再往上走,引ex就不能等于零了,该等于几了,等于一,那int不等于零了,等于一,那in等于一的时候,这时候element是啥?西游记,然后再往下。
03:00
走银再走,再往下走一个是不是等于二了,对银袋等于二拿到谁?西虹市首富再往下走等于三的时候,拿到的是谁?天龙八部对吧,我们可以这样认为吧,对吧,它里面是有一个计数的,有一个第零个,第一个第二个第三个,这种东西我们一般情况下可以管它叫啥呢?可以管它叫啊指针。指针我们暂时先这么以为它,但是C语言里面指针不是这样的啊,不是这样的,那么到了这块就说我们负循环里面,实际上也是有一个东西来记录你当前的指向是第几个,第零个,第一个,第二个,第三个,第四个,对吧,实际上一个个指上的好了,那么接下来我们来看一下这个代码的删除是什么效果啊,代码删除来就拿这个代码而言,现在我们接着去分析,一开始注意啊,一开始程序读到这一行代码的时候,我们首先会干嘛?在这里面建立一个什么索引下标index,一开始index一开始的时候等于零啊,一开始等于零,等于零之后,这个时候我们的element是啥玩意?Element是啥玩意?这个是啥?是不是我不是药神呢?对吧?当前是我不是神,好了,那么这个时候list点删的是谁?不是药,我不是药神,好了,那也就意味着我不是药神会被删掉,对吧,他被删掉了。
04:21
之后注意你这整个列表这么长,删掉了一个,是不是后面的元素要往前挪,是不是要往前挪,就好比说大洋哥现在在这把大洋哥拎出去,把撇出去那边的人是往这边顶一个是这样的吧,好了,用一个,那你要注意原来原来这个位置这哥们他是一号对不对,但现在一挪它变几号了,零号对不对?好了,那么它是零号之后,也就意味着,也就意味着这地方它是零,它是一,它是二的是不是这样看我是吧,然后再往上走,我下一次循环index是不是要加个一是吧,Index加个一,Index等于几等于不是,你该等于几等于几是不是等于一了,等于一这时候是不是该指向谁了?是不是西红市首绘了,是不是把西游记完美的过掉了,是不是,那么这个时候我再删,删的是谁,是不是谁,是不是西虹市首富,所以你的历史再删,西虹市首富是不是就出去了?西虹市首富出去了天。
05:21
当八步是往前又挪一个,所以你的所引下标是不是变成这个样子,它没了,它变成几了?它变成一了,对不对?引dex再往下走是不是等于二了,等于二是不是出去了,出去了循环是不是结束了,结束之后是不是跳出了,最后剩下的是什么星义和谁发看懂哪回事了吧?所以这个删除你在循环列表的时候不能删,能听懂这意思吧,什么要也一样,一个道一个道理,就是原因就是当我看一开始指向他的时候,我把它删出去了,然后后面光往前往前挪了,它是不是和前面这个位置了,然后同时我又这那又往后走一个,这么一前一后正好差了一个位置,能明白啥意思吧,一前一后啊,所以你list在循环的时候听好了,不能进行删,不能进,因为你删的时候,它会有一个有个有个有个索引的一个改变。
06:21
变,所以这块切记,List在循环的时候不能删,因为会改变索引,你会把索引整个改变,那么这时候既然这么不能删,那你怎么删才算安全呢?怎么删才算安全呢?其实在作业里面我已经讲过了,我讲过了直接删,不让删,那就绕着,绕着办法删,对不对?怎么绕着删?把要删除的东西我先记录下来,然后循环要删除的东西去删除真正的列表。
07:01
能没啥意思吧,这么玩啊,来看这怎么玩,我想把list里边的每一项都删掉,那这时候我就可以来准备一个delete要删的这个list可以吧,要删除的这个列表,那么在这个列表里面干嘛呢?它点element,这是为了干嘛,是不是记录下来要删除的内容对不对?然后当你循环结束的时候,你这delete里面装的是不是要删的东西了,对吧?那么接下来怎么办?接下来怎么办?我是不是要循环element in哪是不是要删除的列表啊,对吧,你要循环,你要删除列表,然后删谁是不是删原来的列表,对吧?删原来列表看着啊,来循环记录的内容,然后删除原来的内容。
08:01
懂了,那你要循环记录内容,去删除原来的内容,要不然你就删不三净,这个时候你再运行一下走,你说空了,说空好了,这个是这个东西啊,这个是这个题,那么这个能看懂吗?这个能好了,原因听好再说一遍原因,原因就是当我要删掉它的时候,我要删掉它的时候,这个一定要指向它,那么这个时候它被删掉了,后一个就挪过来了,后一个挪过来了,而我这里那还要往右再走一个,正好完美的过掉了一个人知道吧,因为他的索引在改变,那么这个是很常见的一种情况,听好啊,很常见的情况,这个是深坑啊深坑,那么这个东西听好了在什么地方能用,我给你举一个例子,比方说来一个列表啊,我把上面注掉啊,我把上注掉,来个列表,历四等于来老周家的人。
09:01
周,记住周润发,周星星啊,来了质质质是吧?同样是九年义务教育是吧?你为何这么优秀?接下来交给你个什么任务呢?删掉姓周的人,删掉姓周的人这个需求很正常了,对吧?我可以把姓周的人对吧给他从列表里面刨出去,刨出去来,你们动手候。你们动手说删掉姓周的人,删掉姓周的人啊,自己动手试一下。啊,我说一下这里面这听啊,这个from case,它是从属于这个的类的,所以你可以直接用类名去访问,根本不需要这个对象,这个对象在这完全是用来迷惑你的,完全是用来迷惑你的,它的作用最终会干嘛?返回给你一个新的字典,哎,这么句就OK了,它返回给你是新字典,跟上面这个字典一毛钱关系都没有,听好一毛钱关系都没有啊好了,这个就是我们的一个考试题和面试题,考试题和面试题你注意看好了它打印的是啥啊,兄弟们看好了他打印的是啥?这个地方很坑,我再说一遍,他很坑,无数英雄就折在这题上,真的是无数人就死在这种题上啊,其实水平都很高啊,技术都很好,但是可惜了不平台。好了,那么关于。
10:46
列表和字典,我们的相关的补充知识点大概也就这么多了,往下看一下啊,看一下基本上就这么多了啊,就这么多了,然后最后这边还有一个类型转换,类型转换的话,还记得我们之前类型转换是怎么说的吗?类型转换我想转成什么就用什么扩,记住吧,一样道理,到后面什么组列表进行转换也一个道理,你看我把元组想变成列表就用list扩,对吧?我们把列表变成元组呢,就用扩对吧,你想变什么就用什么去扩,我们自始终都是这句话,自始至终都是这句话啊。然后下面有这么一个东西,它是跟别的不一样的,就是字符串,看着字符串想转成这个列表,你需要干嘛?切割切割还记得吧,切割切完之后变成这个列表对吧?那把列表变成字符串,你用什么?
11:46
Join对吧,用join上午早上刚讲的join啊,把一个东西插进去啊好了,这是这个living转换,这然后能够被当成false来使用的数据,空跟空沾边的对吧,零是不是是是对吧?然后还有这个空看着空字符串对吧,还有什么你看空,然后呢,空列表,空元组,空字典,还有什么同集和都是false,都是所有跟空沾边的都是false啊都是house这些东西我们基本上已经快呃基本上把它总结的差不多了啊,差不多了,然后既然说到这个鬼东西了,该到谁了,Sat对吧?Sat集合我们说set集合不重要,但是你要知道它有一个特别特别好的一个一个点,一个点特别好用的一个点。sat集合是Python的一个基本数据类型,一般不是很常用,也就是说在你后面做项目的时候啊,听好了,在你后面做项目的时候。
12:46
基本上没有人会采用选择用集合来装数据,因为集合它有一个问题,就是它无序,并且看吗不重复,你如果你数据有重复,他直接给你干掉,但是你这数据还有用,你是不是就崩了,能想到什么样了,比方说咱们班人名两个张强的,你录完数据之后成一个张强了,合理吗?不,不合理懂吧,所以这种东西啊,这东西你后面用的不多,但是他的这种特性,它这种特性,不重复的,无序的这种特性啊,可以帮我们干嘛呢?去重,有一些东西确实是你是需要去重复的,确实是需要去重复的,举一个例子啊,举个例子在呃,我我小的时候啊,那时候玩体育彩票,你玩过的吧,就现在玩的吗?玩体育彩票,体育彩票里面我那时候是,我记得是很小时候有什么36选七么,35选几的那种,21选五,听过那个吧,我们黑龙江有个叫。
13:46
21选五啊,21选五,从21个数里面选五个数啊,21个里面选五个,它有重复的吗?有重复的吗?来黑龙江的有没有知道的龙江风仔。
14:00
哎呀,真尴尬尴尬尴尬了啊,这个难受啊,我的天,我们那会就那款彩票就21个数里面选五个,它不允许有重复的,因为它是从里面摘出来一个球,你摘把三号摘出来,你可能还会再摘到三号嘛,摘不到对不对,所以这时候如果你用随机数来做这个案例的时候,你会发现很容易出现重复的值,那怎么去掉重复值呢?就用这个S及格啊,S及格可以帮我去重,这是它最大的一个。作用啊,最大的一个作用,它可以去重,那么里面的元素听好了必须是可哈希的,谁是必须要可哈希的人,之前讲先讲谁是必须可阿西的人,字典字典里面谁字典里面K是可阿西,那么你字典里面的K可不可以重复,可以可以重复的K进去会产生什么现象,是不是修改替换了对不对?所以我们说字典里面那个K啊,它是不重复的,还必须是可哈希的,Sat集合那个里面的元素也必须是可哈希的,并且它也是不重复的,是跟K很像,对不对?所以我告诉你,S集合本质上就是不存六的字典,就是不存Y6的字典,一样的性质,一样的性质无序不重复,又必须是可哈希,那么跟K一样吗?对吧,一样的,所以S听好了就是字典类型,但是数据只存K而不存。
15:32
VALUE6而不存value流啊,就这么个玩意儿好了,那么它是什么?必须是可哈希的,我们现在知道可哈希的东西就这么几个是吧?有int,有字符串,有元组,有布尔对吧?别的好像没有对吧?现在学到的就这么几个,然后注意集合里面呢,必须是个哈希,而set本身啊,这个有点有点有点绕,本身它是不可哈希的,就像字典一样,字典也是不可哈希的,它是可变的,所以它怎么讲呢?它里面是不可以把set装在set里面的,能听懂啥意思吧?Set里面是不能装set,咱们LIST4里面是不是可以装list对吧?字典里面是不是可以装字典对吧?但是set里面不能装道为啥不能装,它本身是可变的,本身是可是不可哈的,对不对,它不能往里面放,就是它里边有要求,是。
16:25
要求是啥?因为这里边放的是必须,必须是可哈西的,对,好了,来看一下这个怎么讲呢?这个这个赛的及格,我们先看一下长什么样子啊,长什么样子来把它住调,对它也是画括号来,来个零五叫算及格,汉式及格啊,倍儿简单,来一个S等于直接大括号,这个是啥?来type s啊type来S这时候看好了什么玩意是不是这字点对不对,但是我往里面放个A,这成啥了?这成啥了,这就是S结合了,所以他们两个呀,真的你说他俩没关系,鬼都不信知道吧,那长得一样吧,都是大方对不对,都是什么哈希不哈希的东西,对吧?所以他俩真的是内部啊,内部虽然我没有研究它的源码,但是我能猜个八九不离十啊,能猜个八九不离十,所以这里面我们说。
17:25
代可以用大括号来表示,大括号来表示,那么如果你想声明一个空集合,你要这么办,你要这么办,这个是个空集合,空集合相同的道理,兄弟们,如果你想说明空字点我可以,这等于什么?这的小朋友,空字符串吗?Str空数字,空数字是啥玩意?T来,我看这哎呀这个我没这么玩过来忽然想到了,来来个哎看这哎这哎,那空数字应该是啥?零啊零有点诡异啊,有点诡异来还往下我们还学过哪些了字呃,列表是吧?List等于list括号,这是什么?空的列表啊,空的列表这个就不给你演示了,叫这些东西是初始化一个对象的办法,这叫实例化,这些东西叫做实例化,你们讲这个对象的时候。
18:25
还会再提啊,这个东西叫实例化好了,这个东西弄完了之后,我们回过头来看我们的S集合啊,把这个注意一下啊,这注意一下,这是空集合,空集合啊,那么集合有了,往里面装点东西吧,S等于叫啥呢?叫王者荣耀,于小C啊,于小C你们不知道,呃,英雄联盟然再玩一把王者荣耀,再来一个123,再来一个two来,再来一个two来,这个时候我们去打印这个S,你看好了,打印这个S,首先首先我们这里面王者荣耀上出现了两次,对吧,那么两个王者荣耀的话,到了赛的集合里面,它会帮你剩几个,剩一个去虫触也会剩一个啊,都会剩一个,来提醒一下。
19:24
王者看王者荣耀抽123英雄联盟有顺序吗?没有没有啊,也是无序的,不是按照我们保存顺序听好啊,这个无序无序基本上没有绝对的随机,记好了以后干活要是没有完全绝对绝对的随机,基本上它是有顺序的,但是不是按照我们的顺序能听懂吧,不是按照我们的顺序啊好了,这些东西完了之后往里面这是合法的,往里面存两个不合法的,比方说S等于啊123再来一个这个123来我们去打印一下这个S找你,哎,直接报错,直接报错,报什么东西,这个见过列表类型的东西怎么办?是不可哈的对吧?哈,这是不可哈的这个列表,那么往里面给他换一个,换这个可以,这可不可以可以。
20:25
按照这个就不报错元组是可以的,但是呢,我说我换成这个,这是不是也是集合呀,对不对,集合里面泡集合,集合是不考哈西的,所以后来看这直接是哈西啊,这是不可呃哈西的,好了,这是不合法的啊,这是不合法的啊,所以通过这你应该能猜到我们不会讲集合的嵌套。有有吗?没有啊,你能给我讲讲也行好了,往下再看,往下再看,那么集合里面的元素它是不重复的,并且它是无序的啊,记得这么个它的特点,它最大特点记得就是不重复,我们可以用它去驱重,这个很重要,看看比方说我现在来一个字,呃,字典啊,来个列表吧,来个列表啊,来个列表,比方说啊,我现在往里面录这个学生的姓名,咱们从小到大啊,在座各位可以想想以下名字在你们的班级里面是否出现过,有没有一个都没有强黄磊刘懂了吧,刘刘伟是吗?满大街都是是吧?张张伟是吧?李伟李伟是吧?这种名字特别多,浏洋队刘。
21:49
咱办公室还有刘洋呢,对吧,我的同事里面大概有三个刘洋了,好了,现在我现在把这个人呢录进去了,但是呢,有一些重复的东西,我想把人名啊去一下,虫怎么去呢?你用类似的去,去虫会非常麻烦,不信你试试,你试试,那想用简单办法怎么办呢?把它变成S的集合来,怎么变,先变S括号,这数是变成S集合了对吧?这个我们应该能总结的出来,你想转成什么就用什么括,然后接下来怎么玩了,Bring s,这S是什么?看好了,这S是4D,不是那个集合,但是里面元素不重复了,对吧?但是我最终原来是什么列表,我还得干嘛说变回来对吧?怎么变回来,怎么变回来,这list再过去来。
22:49
就这么个玩意儿,就这么个玩,然后这时候我们再打印list,就是去了虫之后,死来手看这儿,这个结果就出来了,结果就出来了,那么也就是说我们用集合可以帮我们干嘛去重复,去重复啊,去重复这个去重这个工作呀,和你们学完so口之后,到了工作了,从工作期间吧,你基本上会碰呃,90%的人都会碰到去重这个工作,这个工作是非常非常恶心的一个工作,你可以尝试一下啊,你可以尝试一下非常恶心的一工作啊,驱虫复你也得考虑啊,刘哪个啊,删哪个,这都是你要考虑的问还要考虑性能问题,因为去虫的算法都很麻烦,都很烦啊,你可以写一写,特别恶心,所以这个赛。
23:49
集合在这里面就非常重要,如果有一天要求你把数据库里面的东西都给我,把重复的东西都给我干掉,留下不重复的,那怎么办呢?把数据库里面东西都拽出来,塞到大集合赛集合里面去,再塞回去就搞定了,你懂啥意思吧,把它都拽出来装在集合里面去,让他自己排去,爱怎么排怎么排,排完了之后再嘣全塞回去啊,虽然效率低一点,但是简单啊简单好了啊,我写过这种这种这种驱虫的那个S狗特别恶心啊,特别恶心你未来你们会会会接触到的啊。好了,这个S集合特征用法就说完了,往下看它的增删改查,这个不要求你去完全的掌握,不要求你去掌握啊,就是了解一下第一个增加,增加这个词叫啥ada dad,添加,把什么什么东西添加到我们的集合里面去啊,添加到集合里面去,然后这还有一个什么,呃,Update。
24:49
是迭代更新,迭代更新,你猜猜这个更新完之后什么效果,听猜猜什么效果,迭代带迭代的永远是一个一个的,对吧,一个一个的什么效果,麻花藤是吧,进去啊麻花藤三个三个马一个花一个捧一个是吧,然后下面这个是什么,张曼玉一个,李瑞彤一个就没了,就没了,因为第二个李瑞彤在进的时候是不是就被干掉了,好了,这个知道这个玩意它能增上奶茶就可以了,增往下山山的话,Pop pop是啥来弹对吧?删除一个,并且它的删是什么,随机删,随机删啊,并且你想是指定删的话,你需要用谁呢?用remove啊,Remove去指定你要删谁,基本上都是咱们见过的词,没有新词啊,没有新词这些东西怎么讲呢,翻来覆去。
25:49
其实始终都是那么几个啊,都是那么几个删除,然后呢,修修改,修改的话呢,这怎么讲呢,就是没办法去直接修改,因为它没有索引,没有切片,没办法直接定位到一个元素,所以它的修改只能是先干嘛,先删除再新增,先删除再新增,就是说白了,它本身没有索引,你没法用索引改了,对吧,他也没有什么修改的真正的办法,那没办法,你只能干嘛呢?用这个先删掉,先把原来那个删掉,然后往里面补一个新的,那相当于修改了啊,就变啊对,先转成列表也成啊,转成列表也是个办法啊,兄弟来往下走,查询查询的话,S集合,注意它虽然不可哈希,但是它可迭代,它可迭代,所以它可以干嘛呢?否循环可以否循环,就是说白了,这东西你当什么用?当那个列表或者当字典用都成。
26:49
啊都成两个东西的一个组合体啊,组合体常用的操作,常用的操作这个呃,集合里面啊操作的话不多,但是呢,都挺挺好玩的啊挺好玩的,比方说这个这个啊第一个集合,第二个集合,然后两个集合取交集,交集这有啥意思不都有都有交的,两个都有的的都存在的,那么这个时候它们两个里面都有的是谁?皮城山啊山歌是吧,皮成山,所以皮山会被啊相蕉交出来,然后呢,香蕉你可以由这个符号来表示,也可以用intersection intersection这个函数来做,这个怎么讲呢?相交有交集就一定有并集,并集的话是这个是这个竖线,竖线啊或者的意思啊或者的意思,并集把两个怎么合到一起,合到一起啊就是这个并集,然后叉戟叉级是啥呢?就是减啊减。
27:49
这前面里面有,后面又没有的,前面有后面有没有的,这是差集反交集,这个怎么讲呢?交集就是交集的,交集的什么取反啊,取反啊,不在两个中的交集的那个那一部分东西啊,就交集,然后还有什么子级超级这个东西懂吗?数学那个数学上的子集超级一样的啊,一样的,这个完了,我一看到数学也头疼啊,也头疼,所以这个就过掉了啊。S集合本身是可以发生改变的,是不可哈希的,但是有的时候你需要用到什么呢?它是保存一些数据,并且它什么的呢,就是呃,它本身是不可哈希的,有的时候你需要用到可哈希的那个效果,有的时候需要那个效果,那么你只用set不成,你需要用到另一个东西叫做frozen frozen set frozen知道这事吗?Frozen,冷冻冷冻冻。
28:49
别的冻结的,冻结的集合,那就什么不能变的啊,不能变的它是不可变的,来看一下来主调在这来一个S,等于frozen set来往里面扔,这时候得扔集合146698来,这时候我们打印这S你看着。
29:17
81369谁没了,是不是这六没了,是不是可以去重,可以去重复,这个S也是S的集合啊,也是掉了什么掉了。凭什么重播一下?有吗?好了,你做了些什么没带毛尖掉了,好了啊好了,来,这是动力,那么它是可哈希的掉它是可哈希,也就说它可以作为K,也可以作为set里面东西,比方说SS等于看看往里面扔个一或者扔个字母A吧,扔个字母A,同时往里面扔个S,这个S看是什么,它是一个怎么讲呢,是个set集合啊,这个时候可以的打印SS等你。
30:17
班长,这个是可以的,这是可以的,本身能装吗?本身能往这里面放吗?不是本身,本身咱们学了个说不可以,它可变的对不对?而这Z它是可以的,它是什么?冻结,冻结了对吧?冻结了的什么集合,S集合它是可哈西的,它是可哈西的,也就意味着它怎么办呢?不可变,它是不可变表有没有没有zroz froz只有这个放moon只有一个frozen啊,没有你说的那个东西好了,列表冻结不就原组了吗?
31:03
是吧,是啊是啊,好了,这是赛及格看啊赛及格讲的很快,直接就就过了就可以了,过来就可以了,然后里面的这一个操作,这个操作你只要了解一下,简单的增加新啊,添加叫addd,然后呢,删除,删除跟那个其他差不多,Pop啊remove啊就可以的,然后修改,它没有修改,还没有修改,然后你要记住的还有这个东西,就是怎么去便利这个set集合for循环,这个用讲吗?这个这个这个应该不用了,写我感觉快写吐了这个啊,所以这个set集合听好了,你要知道怎么去新增,怎么去删除,怎么去循环遍历,并且记住它的一个特征,最大特征,什么特征去重记着啊S集合去重复,它不保存相同的东西,它不保存相同的东西啊,记住这一点就可以了,这是S集合,好了,接下来休息一下。
32:03
回来我们来讲这头东西啊,这头好恶好恶心,很简单啊很简单,来休息一下四。
我来说两句