00:00
那么我们将在本小节当中继续为大家讲解列表相关内容,好了,首先呢,本小节主要讲解的内容是什么呢?是我们的列表的嵌套以及列表的便利和常用的列表函数啊。首先打开我们的拍charm,打开我们的文档,在文档中做一下简单的记录啊,先为大家介绍一下什么呢?列表的常用函数啊,常用函数那些,这些函数则是系统提给我们的函数,有哪些函数呢?一共要为大家讲四个函数,比较简单点的啊,一个叫做max函数。啊,Max函数意思就是最大的意思,对不对,一个是min函数意思就是最小的意思,一个len函数啊,它的意思就是检测长度的意思,还有一个是什么呢?是我们的这个list函数,其实这个函数我们已经之前已经学过了,对不对,这就是我们要学的这四个函数,比较简单一点啊,我们先把这四个函数来做一个简单的介绍,首先我们为当前的啊函数新建一个文本,做一下测试,新建一个Python文件。
01:08
然后呢,在这里边我们写上麦下线扣的六下线零六文件好了,点击OK,好文件创建成功,然后呢,我们来一个看函数吧,先看第一个函数叫max函数啊,它的作用叫做检测容器类数据的最大值,嗯。也就是说max是可以用来检测容器的数据的,不单单只有列表啊,其实原组呀,字典呀,集合呀,通通可以使我们这个max来进行操作的啊。好,那我们来看一下怎么使用呢?我们首先生明一个列表啊,比如说是一个数字列表,什么行叫做number list啊,数字列表number list好等于中括号,在列表中我们随意的写一些数字啊,随意的写一些数字好了。那如果我们希望获取列表中的最大值,自己用热眼看出来是686对不对?但实际上如果数据非常多的话,你用眼看就不方便了,我们想用程序来获取,那么就可以直接使用max函数把我们的列表变量或者列表往里边一放,然后呢,就可以从这里边直接得到我们的结果,也就是返回,呃,也就是max函数的返回值啊,我们来右键输入一下,大家看一下预算结果是不是686啊,说明686是里面最大的值,我可改一个叭,如说咱把这里边改成这个啊963行不行,那这个时候最大是不是963,诶反过来你看是不是?所以mark函数是可以获取列表中的最大的值的啊这么一个函数,当然max函数只有这一种用法吗?倒也不是啊,Max函数除了我们这种用法之外,我们max还有其他的格式,比如说max团框。
02:52
大家在里面写的时候会发现啊,我写出来它会,呃,刚刚应该有提示啊,大家看一下我写出来它是不是里边可以写很多很多的参数啊,对不对啊,没问题,Max除了这样获取容器中最大值之后呢,还有另外一种用法啊,另外一种max用法。
03:08
另外一种用法。怎么用呢?那就是传入多个参数,传入多个参数也就说白了,我可以这样玩啊,在这里边呢,Result啊,Result等于max函数,然后你在max函数里边可以传很多很多的数字啊,随意传,传很多传很多很多数字,那这个时候呢,它也可以返回你这么多十参中的最大值,也可以做到的,那这样应该是789对不对,来运行一遍,大家看一下结果是不是789啊,所以它除了检测容器之外,它也可以把多个传入的实参中的最大值给你返回来,好了,Max函数就这样讲解完了,它的作用,我们也可以稍微的记一下max获取列表中的最大值,获者是什么呀,多个参数中的最大值两种用法啊,看你怎么用了,既可以写max turn框里边放入容器数据啊,容器数据,但是一般放的就是列表,让子点集合啊,我们这里边写列表吧,行不行列表。
04:12
然后呢,还有一种用法就是max,我们可以在这里传入多个值啊,可以在这里边你直接传多个时差嘛,是不是值逗号。值,然后逗号点点点点,你想写多少就写多少啊好了,这是max函数,Max函数完了之后呢,有一个幂函数啊,其实大家一看也就明白啥意思了,Max最大面积是不是最小啊,它是检测容器类数据的。容器类数据中的最小值啊,最小值好了,那我们在这里边依然写一个列表,Number list等于中括号,我随意的写一些数字放到里边啊,当然正的负子级列啊,你高兴就行,然后呢,干什么事呢?我们使用幂函数进行操作,把列表变列往里一放,然后呢,接收一下它的返回值就可以了。然后result变量接收一下返回值,然后我们打印这个result。
05:04
Friend套上括号啊,打印我们的result,那在这里边最小的应该是三把来用右肩运行一遍。你看最小值是不是三就出来了,当然它的另外一种用法呢,也可以传入多个参数啊,也可以传入多个参数,那在这里边的话,它是怎么使用的呢?Number list等于中括号啊,啊不不不不是等于中号,Sorry啊,应该写直接写就不用什么number list啊,咱这里面直接result。等于我们的幂函数套上括号,在这里边你可以随意的传入多个数据啊,再给写几个负数吧,行行。比如这个负34吧。啊,这个负64好,那这个时候这多个参数中哪个最小呢?我想大家应该能看出来是不是负64最小啊,来result啊,Yes result运习一遍来看一下,哎,是不是六负64就出来了,嗯,这就是我们的幂函数的用法,其实它和max是不是一样的用法呀,无非就是什么呀,函数名不一样,剩下用法都是一样的啊好了,我直接给大家改改好不好你。
06:06
把这个删掉。这个也是幂,然后呢用法,呃,这个意义啊,就是获取列表中的最小值,或者多个形参,多个传入参数中的最小值啊。好了,那这样的话,这个函数也就过去了啊,最小值。好,这个函数完了之后呢,下面讲一下论函数啊,论函数有什么作用呢?它的作用是检测长度,说白了它就是英文单词len的缩写啊,论函数它的作用叫做检测容器类数据的长度,其实长度就里边多少个单个数据,比如列表容个值啊,原组中有几个值啊,或者字符串中有几个字符啊,啊就这个用处,那在这里边我们写一个列表啊,我们再写一个list v啊,等于中括。随便玩了一些内容。比如说我们写上苹果。苹果,然后呢香蕉,然后逗号樱桃啊,然后逗号榴莲。
07:08
等啊,就这写四个吧,那我想看一下这个列表中一共有几个值啊,很多同学说我可以一个个数啊,没错,你是可以一个数,但如果列表很多呢,里边东西好几十个,那你一个数是不是得累死啊,是不是很容易数差?所以我们系统提供了一个函数叫len函数,直接把列表变量往里一放,我们就可以接收它的最终长度了啊,那在这里边来打印一下我们的result即可,来右键运行点长度会是一个四啊。来是不是长度是一个四,然后呢,我们再加一个,比如说在这里边再加一个,呃,加一个什么东西,加一个芒果吧,芒果好,然后右键运行变程序,你会发现变成五了,是不是获取长度了,哎,所以任函数作用就是获取它的长度,而且任函数它可以结合我们的什么呢?Will循环使用啊使用大家都知道啊,这个类函数呢?呃,这个这个will循环需要如果遍历一个列表的话,比如说我要遍历下面这个类VR,我是不是需要知道它的长度是多少啊是不是,那咱以前便利的时候怎么写的哦,I等于零,然后呢,回车will I小于几12345写一个小于五是不是自己来算的,是不是01234,那我小于五是不是01234啊,然后再冒号,然后再使用我们的什么list啊,VR啊,不不list VR加上它的索引I进行一个打印,别忘了把这里边加上一个I需的自增操作,I加等于。
08:36
我们以前都是这么写的是不是啊,这里边这个长度我们是自己数出来的,来预算一下,当然可以并列了,但是呢,列表不可能只有五个这么简单,如果列表有十个100个,你一个个数嘛,是不是?所以我们可以直接累抛上框,把我们的例次V啊往里一放,它会自动计算出长度啊,刚好所引的最大值比长度少一嘛,所以运行列看到没有?所以在使用will变例我们列表的时候呢,这个长度论还是很有作用的啊,所以列的作用应该明白了吧,它的作用是获取容器类数据,获取容器类数据的长度啊,那在这里边用法就是max turn啊,不不什么max啊,Len块把我们的容器类数据往里一放就可以了,容器类数据列表,原子自检金合都可以往里放的啊,还有最后一个list,这个我们就不用做实验了,因为我们一直在用嘛,它的用法主要两个,一个是用来声明列表,一个是什么呀,转换吧,是不是或者是将其他容。
09:36
容器类数据,容器类数据转换为列表啊,这都是它的功能,所以我们也没必要再写,因为我们这两个功能一直在使用,对不对?好了,那这两个功能讲完了之后呢,给大家讲一讲别的东西,什么东西呢?我们刚刚刚好提到用will循环来遍历列表对不对?那么我们这一次来为大家讲一讲列表的便历操作啊,列表的便历操作其实相当于一个小复习吧,列表的便历操作,因为我们之前其实已经学过了什么呀,While循环可以变列,列表也学过什么呀,For in循环为了变列表原组自检集合对不对?所以实际上就是对for循环的一个重复啊,或者叫一个复习,首先呢,在这里边我们新建一个文件啊,第七个文件,右键新建一个第七个文件,麦下线CODE6下线零七文件。
10:28
点击OK,然后呢,我们来看一下列表的遍历。首先呢,我们的列表先给大家写一种最简单的列表,就是一个列表中什么呀,有一些简单的数据就可以啊,几个数据,比如说我们写上一个fruit吧,水果行不行,Us啊f fruit its可以,水果列表啊,等于中瓜里边我们写上水果了,比如说我们写上这个樱桃啊,比较喜欢吃,然后逗号再写上猕猴啊,猕猴桃我就不吃了,水蜜桃啊,水蜜桃,然后呢,逗号还有我们的杏是不是?
11:02
姓呢,不是一啊,是性子是不是?然后呢,还有我们这个李子啊李子李子呢。啊,李子,然后呢,还有什么东西呢?无花果是不是还有这个?呃,苹果Apple是不是好?写了这几个列表之后,我们希望便历这里列表的数据的话,我们刚刚是不是学过will和learn组合起来可以变历是不是?那我们正常情况下要想便历这个列表,好像说实话用的这个will不多,一般都用for来变历吧,是不是?所以我们可以直接什么呢?For一个I啊,或者in我们的f ru u it这个变量I你就随便定义了,看你喜欢了,然后在这里边我们就可以通过print括号I直接来打印出所有的列表中的数据,你看这里边是不是按照顺序一个个都打印出来了,是不是?这就是列表的一个简单便利,但是呢,如果仅仅是这样的列表的话,那还省事了,我们的列表还可能设成另外一种情况,什么情况呢?列表中的数据可能更为复杂。
12:06
可能更为复杂,比如说我们现在的水果,哎,刚刚是列表的便利啊,我们给大家讲的是最简单的一种啊,基本列表。基本列表,基本列表,但是列表还可能会出现什么情况呢?就是列表里边放的数据还是列表,比如说我们这一次啊。有一个叫做什么呢?列表,嵌套,或者叫嵌套列表吧,嵌套列表,很多学生说不理解啥叫嵌套列表,这里边我们给大家讲好吧,嵌套啊,就嵌到一起的列表啊,比如说我这里有一个fod啊,Food的一个列表。那也就是食物呗,是不是,那在这里边呢,我放的食物注意是按照类型放的,比如说放了两个水果,比如说咱把这个樱桃和水蜜桃放到一起,这不都是水果吗?哎,我放到第一个列表中。但是这个时候大家看啊,对于最外层的列表而言,其实这个最外层列表里边只有一个数据,这个数据整个类型又刚好是一个列表,对不对,所以这种列表就叫做嵌套列表,然后呢,那这个时候我们可以再接接着加,接着加看见没有,比如说我这里边再加一点,呃,主食啊米饭。
13:15
然后逗号馒头好,你看是不是一最外层列表里边有两个数据是水果的列表和这个米饭的列表,对不对,那这种格式叫做嵌套列表啊,可以再接着写,比如说逗号我们再加点菜,是不是来点什么啊,叫做红烧茄子,红烧红烧茄子,然后再来一个什么宫保鸡丁,是不是宫鸡丁好,那这样的话,大家看这种列表其实就叫做嵌套列表,问题就在于嵌套列表该怎样进行便利啊,就我想把这里边的每一个数据都什么都执行一遍,其实便利大家我之前给大家说了,便利就是一遍经历嘛,是不是?那这样写起来,其实对于我们的用户来说,读就是这种叫阅读,不太好理解啊,但是程序倒无所谓,所以我们建议大家,如果你想写这种嵌套列表的话,最好这样写,你看见了没有,我一个数据,诶,我占一行,一个数据占一行,一个数据占一行,诶这样的话我们通过最外层可以看。
14:16
图这是一个什么呀?外层里边有三个数据,每个数据里边是不是还有两个数据啊,之所以这么一看的话,是不是就好理解多了,这个列表是不是,那我对于这种嵌套列表进行便利怎么办呢?诶。那就是便利嵌套列表了。便利嵌套列表。这个签到里边有个特征,什么特征?大家会发现这里边每一个内容就是每一个列表,这不有这里边都是两个数据,按照我们之前学的for译语法好像可以用啊,是不是呀?那for语法可以同时遍历二级当中的什么呀,某一个啊,还记不记得咱当时遍历字典是不是也什么遍历呀,所以你可以这样for,一个I,一个j in,我们的fod food啊嵌到里边,然后这个时候打印的时候你就可以print I,然后逗号J,也就意味着每次变历的时候,我们会拿I和J这两个变量同时来获取什么呀?这列这一个小列表中的两个数据获取了之后打印I和J,再上下一个小列表中获取馒头和米饭分别给I和J,然后再打印,以此类推,是不是?那这就种什么,这就是嵌套列表的一个遍利操作,你看是不是都遍利出来了,也没有问题啊,但是这种列表有一个问题,什么问题呢?必须是等长的列表啊,必须等长。
15:33
B叫做。必须是等长的,什么不是等长啊,等长。的嵌套列表,简单的说就是你这一个不是最外层列表里面什么写的三个数据,在这三个数据都是列表,而且列表里都是两个,如果有一个是三个,或者有一个是一个的话,那么我们的这个嵌套列表的便利使用复印就会有问题,比如说给大家看一下行不行,我们把负的拿下来稍微进行一下改造,干什么事呢?在这里边把馒头米饭再加一个啊,再加一个煎饼行不行,加一个煎饼。
16:09
加一个煎饼,那我们这个是叫煎饼啊。煎饼在这,然后下面这个再少一个吧,那这个时候大家就会发现了啊,我们这个列表确实也是嵌套列表,没错,但是这个列表它里边的每一个数据长度是不都不一样啊,这是两个,这是三个,这是一个,所以它叫做不等长的不等长的嵌条列表,对于这种列表我们就没有没有办法采用放面上面的方式进行遍历了,原因很简单啊,你上面这个便历明显的写了一个I一个J来接入这里边的两个数据对不对,但是你下面这个列表有两个,有三个,有一个,那我写几个呢?所以无论怎么写这种方式都不可以那么为了。解决我们这种列表的便利问题,很多时候不能便利吗?可以的,我们可以采用叫做循环的嵌套,比如说我做一个IE,我们的OD,那么这个时候我想问一句,我们打印的时候I是多少呢?
17:06
很简单,I这个时候是不是应该是什么是负的里边的每一个小列表啊,有时候你打印出来之后,你会发现,诶,它是一个小列表,看到没有,第一次I取出来了樱桃水蜜桃这个列表打印了,第二次I取到了馒馒头,米饭和煎饼这列表打印了,第三次I取出红烧茄子列表是不是打印了?那既然I是个列表的话,我可不可以再次来变利I呢?是不是,所以我们可以在这里边注意它好了,继续变利啊,要嵌套循环在这里边。嵌套循环遍利小列表我们的,哎,那在这里边再写一个就可以了吧,做一个j in我们的谁呢?别忘了现在你要遍利的是I了,所以这个时候我们打印一下I就可以了,糖告打印I,我们照样可以把所有的实物I片遍利出一遍,哎,Sorry,打印错了,打印挨个码打印J哈,因为I是一个小列表,我们这次是不是拿J来里边取的是不是,所以右键运行一遍就可以打印出来里边的所有数据了,看见没有,所以这就是我们嵌套列表等长和不等长的遍历,等长的话你一个佛音是不是就可以搞定了,但是不等长的话,你可能需要嵌套啊,当然我们嵌套列表也不是说只能写两层,你在这里边一个列表里边可以嵌一个列表,列表有值,还可以再嵌列表,还可以再嵌列表,那么无所谓层数一直可以嵌套下去,那这里面就涉及到一个列表的访问问题啊,或者叫做嵌套列表的访问问题,这块给大家补充一个内容行不行,补充一个小内容啊,补充一个小。
18:36
内容。补充内容就是嵌套列表的访问啊,就我想访问里边的某一个数据,怎么办呢?我们以负的为例,把负的这个列表拿出来。往下面复制一下。然后呢,把上面的内容注视掉,其实这个我估计难不住大家,大家自己看也能看的差不多啊,在这里边呢,我想访问这里边的馒头,该怎么访问呢?首先这样做print框,如果你直接打印food的话,D啊fod,那毫无疑问整个大列表是不是都出来了,是不是哎,变错了,Sorry,右键运行一遍。
19:13
是不是整个大列表都出来啊,那所以呢,为了找到馒头,我得找到它所在的小列表,它所在你看这个是大列表,我们用变量可以找到对不对?那大列表中的这个是几个零一,它是不是索引一啊,所以在里加一个索引一,这个时候呢,我们就找到了小列表,看到了吗?馒头所在的小列表。接着来啊,馒头的小列表里边馒头的标编号索引刚好也是一吧,012是不是也是一啊,所以你把它当一个整体变量,我后面再加一个中号写索引就可以了,再写个一,我们就可以直接找到馒头了,看见了吗?所以其实就是如果你是嵌套列表的话,就是索引里外边再加一层索引就可以访问到了,好了,那这样的话,关于我们列表的所引就为大家啊不列表的这个便历啊,就为大家介绍完了,介绍完列表便历之后呢,为大家讲一下我们列表中的一个非常重要的东西,叫什么东西呢?
20:07
叫做列表啊,列表别列还没写啊,使用for in或者will循环别即可啊,给大家记一句话就可以了,使用for,点点in。或者是well,便利即可啊。我们在这里边,或者叫本小节中重要为大家讲的一个内容叫做列表内涵啊,当然这个怪怪的是不是英文单词,它叫什么呀?它叫list content啊,Student啊,但是这个翻译成列表内涵不好听,所以我们国人有更好听的翻译叫做列表推导式。这听起来是不是这个这个这个意境更高了,是不是列表推导式啊意境更高,那什么叫列表推导式呢?我们给大家举一个小例子,你就能明白了啊,首先呢,我们在这里边右键新建一个文件啊,是我们的第八个文件,麦下线扣的六下线零八文件。
21:01
点击OK,然后呢,我在这里边为大家声明一个数字列表,声明一个列表来看好了,列表里边我们怎么写呢?写个简单点的哈,叫做呃,Number list啊,Number list l啊,等于中括号里边看好了,呃0123456,呃这这样叫是不太好听啊,这样吧,咱叫它一啊23456789,这样写十啊写到十吧,因为从零开始的话,他给大家根索引搞搞蒙搞搞搞搞串了啊,所以我们就不这么写了。好了,那我们接着看啊,我们接着看,那在这里边的话。在这里边的话,我们有一个小要求,什么要求呢?我希望大家能够把列表中的奇数留下来,偶数都不要,也就是我要获取一个这个列表中所有基数的一个系列表,那我们该怎么完成这个操作呢?好,那么我们在这里边。
22:05
来试验一下以前的学习到的东西能不能完成这个操作,好吧,那在这里边我们要完成这个操作的话,那至少要便利这个列表中的每一个数据吧,是不是,所以我们可以采用复印的方式进行遍历啊,所以要便利。我们列表中的数据,列表中的数据。那肯定要做到的是不是,所以for一个IE,我们的number list,这个是可以做到的,然后这个里边我们不可能只打印I这么简单啊,这样的话就打印出来,我们不要这个效果,我们要的是把里边有用的是不是奇数过滤出来啊好,那我要在这里边判断程序是不是奇数吧,是不是判断啊,这个判断,然后呢,便利的数据是否是奇数,这个倒不难啊,判断是不是奇数的话,只要写一个if判断是不是就可以了,如果我们的I它求于二等于等于一,求于二等于一的话,那不就是奇数吗?我们可以在里边打印一下这个诶。
23:02
打印一下这个,哎,好,然右键运行列大就会发现,哎呀,真的可以找到,诶13579,我们是不是把里边所有的基数都获取到了,是不是,但是没完啊,咱要求的是未来之后你要得到的一个是一个新的列表,也就是我要把这些技术组成列表,而不是打印出来,所以我们需要把数据加到列表当中去啊,那往列表里加东西,好像咱没学什么列表的相关函数对不对?唯一学的一个东西叫做列表什么呀?列表的分片赋值,你看往里加东西,列表的基本操作是没法加的是不是?好,那我们就用列表分片赋值往里加呗,行不行?好都说这怎么加呀,来看啊,那我们首先在最外侧声明一个空列表。空列表啊。来叫它什么呢?叫它g list行不行?就是基数的意思啊,这这怪怪的啊,叫这个ODD吧,O d list o DD是奇数的英文单词啊,等于空列表,所以这是一个声明空列表啊,声明空列表。
24:03
用来装我们的数据。从列表啊。用来存储我们的数据,然后呢,我们既然已经找到了,要往什么列表里添加的数据,是不是这个I呀,就是奇数的时候要加进去嘛。所以在这里边我们将。啊,合法的数据I啊,将I啊添加到列表中,添加到列表中,添加到列表中。那怎么往列表里加呢?哎,咱说了只有一种方式叫做分片赋值,对不对啊,那你分片赋值odd odd list,分片的话,第一个数的话,你要往里插,它里边一个数都没有,所以你要往里插的话,肯定是从零到零,在零之前插很多,这怎么写呢?我能不能在里写一个中括号,你看好了我能不能这样写啊,零冒号零的方式往里加一个数据呢?咱试一试行不行,等于中括号里边放一个I,你还得这么写,是不是来右键运行一遍,你看一下好程序没有报错。
25:04
这只是做测试啊,为了试一下第一个数零能不能加进去啊,来O。好啊,打什么,呃呃对是这个啊,右键运行一遍,你看一下有没有数据,OK,说明我们加进去了,是不是说明我们加进去了,因为我们这注意看好很多是为什么是97531呢?因为我们每次定的都是在前面加啊零零是不是最开始的位置,所以我真的得到了这个列表。好多说,那我能不能在后边加能,那你就得什么呀,每次遍历的时候都要获取这个新列表o list的长度了,现在我是不是得到了我需要的效果,是不是啊,当然好多学说,那我就想什么呢?我就想这个加到后边去,13579,这样怎么办呢?我告诉你怎么写啊,这样写啊,ODD加的方式不变,O DD list依然采用分片赋值的方式,只不过是你每次都要找到它的最后位置。最后位置都是这咋加呀,是不是这怎么加呀,你想想怎么加,能能往后边直接加吗。
26:05
能啊,我们可以这样加在这里边儿检测出列表的长度,也就是我们的odd list,非常麻烦的,那你像假如说列表中现在有一个数据一吧,有一个数据一啊,我想往里加东西,我是不是要加到什么呢?要加到一的后边对不对?那一的索引位置是零啊,所以在这里边你要查出它的索引。然后呢,还要填到最后去,填到最后去啊,那最后这个是不是一空就可以了,等于中括号里边把I放进去。很多这家有问题吗?啊,长度是一,我在一这样的话也是在。一的前面加你,所以这个呃,试试吧,应该不是在一前面加啊,啊不对啊,这个不对啊小I啊写错了小A了。小A右键圆心一遍,哎,这为什么还是个大A呢?啊,右键月行边程序啊,你看是不是加进去了是不是,哎,这样对了啊,这样刚好对了啊,是不是可以加进去13579得到了是不是啊给大家举个例子说明一下啊,当你的列表是比如说我们这里边123135,我要加七的时候呢,在这里边刚好符合七的要求嘛,如果是七我就过来,过来往里加的时候怎么加呢。
27:20
我先获取列表的长度,现在列表长度是不是三呢?所以就相当于o DD list中括号三,冒号三是不是哪0123是不是已经是最后了,是不是后边空着,就是分别复值空着的话,不就往后加嘛,是不是,然后等于一个列表就可以把这个值加进去了,当然你好多时候我要减一能不能加进去,比如说一这个五明显是索引二嘛,对不对,很多时候我这块减一是不是,也就说这块用二的,用二的方式能不能加进去,也就是说你在这里边看好了,索引是二的位置是五,我再往里边加一个数据的话。它会把五给覆盖掉的啊,所以你这块不能减一啊,不能减一,减一的话就会乱套了啊,是不是乱套了,所以千万不要减一哦,因为我们刚刚推算过了,这块写三的时候刚好是在五后边加嘛,是不是好了,当然这个对大家来说还是很麻烦的,因为大家为了这个是不是在纠结啊,是不是,哎呀我的妈呀又得获取它的长度,当它的这个分片赋值的索引又得往里边加数据,你会发现这个操作非常麻烦,所以不是不能做到啊,这个我们现在改好是可以做到啊,确实可以做到,但是非常的麻烦,是不是用到了特别多的知识,为了解决这种操作的复杂性啊,我们的ton为我们带来了新的东西,叫做列表推导式,所谓的列表推导式什么东西呢?给大家一句话,记住就可以了。列表推导式就是。
28:43
列表推导式。列表推导式啊。就是采用我们表达式的方式啊方式。直接不是防止方式,直接过滤数据方式。
29:02
直接过滤。数据,并且返回新的列表的操作啊,就这么个玩意,就么玩意很多,说那这个东西是不是会不会很复杂呀,不会。首先呢,我们先来教大家最基本的列表推导式啊,基本推导式,基本的推导式。不带有任何的判断条件啊,它的写的格式是这样的啊,是我们的变量,也就是要接受的结果变量啊,等于直接怎么写呢?For,你不是因为推导式也好,你不管怎么的,我们这个结果必须要变列列表本身对不对,所以它的格式是这样的啊,For一个变量啊,这个变量你随便定义啊,For一个变量,然后印我们的列表。说这个我当然看懂啊,用这个变量来列表取数据是不是好,取完数据之后,你是不是最后还要得到一个系列表啊,没有关系,在你的for的最两侧啊,加一个中括号。
30:04
并且把你刚刚这个变量。放到你货前面就可以。看见了吗?这就表示用注意看它的读法比较奇怪,用负里边这个变量来变列列表,并且把这个变量最后取出来放到这里边儿,通过外层直接帮你做出一个列表来啊,直接做出一个列表来,为了和前面变量做区分,我叫结果变量吧,好吧,行不行,这就可以了,好,那现在我们来试一下这个操作好不好,好,那返回我们代码当中啊,返回代码当中还记不记得我们最开始这个列表是不是好?来看一下基本推导式,对于基本推导式而言,它是一个完整的复制啊,因为没有判断条件,所以完整的复制怎么做呢?看好了我们的新的列表就直接等于for一个I in我们的number list。这就表示我要用I这个变量啊,来遍利这个列表里边一二三四五六七八九十,然后干什么事呢?咱说了我未来是不是要组成一个新的列表啊,所以你要在最外侧以列表的格式写上一个中号,那你组持值列表是什么来组成呢?是不是你变列之中I的每一个取值啊,所以把I放到前面就可以了,加空格,这个时候大家来看好了,我们打印new list,你就会发现这个new list和我们最开始的number list是完全一样的一个复制啊,这叫基本的推导式,其实就是便利,并且把原来的数据复制了一份给自己啊,当然这个就不符合我们刚刚要求,我们刚刚是不是只要奇数或者只要偶数啊,那这个时候就要把基本推导式进行提升,功能叫做什么呢?带有判断条件的列表推导式。
31:45
带有判断条件的推导式啊,或者叫做列表推导式的写错带有判断条件的推导式好了,那在这里边依然是结果变量。
32:00
结果变量。变量,然后等于语法不变啊,首先你在里面依然是F2做一个变量啊,做一个变量你自己定义什么都可以啊,做一个变量in我们的列表,那一个列表之后呢,你要把I取出来,这个大家都知道,把这个变量取出来都知道,但是什么样的变量呢?哎,要求也就说是不条件,所以看好了。这是条件表达式啊,叫符合,你直接写吧,条件表达式往这一写就可以了,那么这个时候它在便利的时候就会对这个变量使用这个条件表达式进行判断,符合条件的变量组成列表,所以最外层要加一个中括号,那符合条件的变量组成列表,所以还要把变量往前放到负,前面空格加一下,说白了他们基本推导式就多了一个简单表达式,是不是就是仅此而已?来返回代码当中来接下来看。看好了带条件的推导式,带条件的推导式。
33:02
我们这次只要奇数行不行,只要奇数推导式好,只要奇数的话,首先呢啊new list new。List啊,等于我们的。For一个I啊,变量可以重新利用嘛,是不是in我们的number list。要什么样的I呢?奇数的I,那我们在这里边判断一下I就可以了,If I求于二等于等于一,如果符合这个条件的话,说明I是不是就奇数啊,好,符合这个条件的I,我把它干什么事呢?组成列表,所以在这边最后层加一中号表,实时列表,然后组合组成的I啊,因为这个I符合条件的I组成列表,是不是把I提到前面,那这个时候你再次来打印我们的new list,你就会发现我这次的new list当中只有奇数13579,但你如果绕偶数的话,就把这个条件稍微一改写成零,那它只有二四六八十了,就只有二四六八十了,看见没有是不是?这种带有条件的推导式用来过滤数据非常方便,没错,这个我们在以后经常用它来做数据的过滤啊,尤其在做自动化运维相关的啊,好,这是第二种带有判断条件的列表推导式,那完了吗?没有。
34:16
列表推导式,还有更加复杂的格式什么呢?多循环的列表推导式啊,多循环列表推导式。多循环列表推导式啊多循环。列表推导式这个就比较麻烦了啊,什么意思呢?意思就是我要让两个列表进行推导式的操作,相对来说比较麻烦,比如说我们在这里边写上一个新的啊,多循环。多循环列表推导式。可以导式啊,然后呢,干什么事呢,我现在写两个颜色列表行不行,那在这里边的话,第一个COLORS1等于写上啊,就比如说红色啊红色。
35:08
逗号橙色啊橙色红橙黄色黄色有这么三个颜色对不对,然后呢,下面还有一个颜色,看四二,比如说我们写上啊绿色。红橙黄绿,呃,青色啊青色行不行。青色、蓝色。这个蓝吧,蓝色和我们的紫色。我们的紫色。然后呢,我希望干什么事儿呢?我希望这里边的上面的颜色和下边颜色混一下,比如红青会一下,什么颜色,红蓝会一下,红紫会一下,澄清会一下,成来会一下,看看他们都是怎么样混合的一个效果行不行,那这种情况下我们就可以采用多循环的推导式来进行操作,那多循环推导式就意味着我一定要带有两个循环吧,所以我们大家看好了,Result等于for一个。
36:00
什么呢?I in,我们的COLORS1表示使用变量I来一中进行遍历,然后呢,For一个直接写第二就可以了,For一个J,我们的COLOR2表示直接使用J来第二个列表中遍历,那变列完之后,我们是不是要把I和J进行一个操作呀,对不对?所以呢,在这里看好了,我们加个中号,表示未来是列表I和J做一个简单的字符串连接操作行不行?那么I是字符串,我可以加上一个小J空格,这就表示要把最终的便利的I和J分别获取出来之后组成一个新的字符串啊,连到一起。所以呢,这次打印result print套上括号打印result。右键运行一遍,你看是不是红青红蓝红紫澄青橙蓝橙紫黄青黄蓝黄紫对不对?这样看懂了吗?这就是多循环的推导式,其实本质上就是什么呀,就相当于我便利一的同时内层再嵌套一个循环来遍列第二个列表啊第列表这个多循环最小式,它会把这里边的每一个上上下的每一个都进行组合,那么这样组合应该是一呃九个对不对?
37:11
一人组三个嘛,339,所以一个两个三个四个五个六个七个八个九个就OK了,如果你把它解析成我们的什么呀,普通循环行不行,给大家看一下,解析成普通循环啊,普通循环那其实就是这样的,做一个I in colors1,那同时做一个j in color2啊卡二,然后在这里边把I和J进行了一个相加,然后放到了列表里去啊。放到列表中,就这个效果是一样的啊,是一样的,但是你会发现我上面一行是不是就写完了,嗯,那这样里边我们也看到一个好的情况,就是前面这个数据原来是可以进行什么呀操作的,对不对?没错,我们不但可以过滤数据,还可以把过滤出来的数据进行额外的操作,当然我们下面是有两个数据,你可以进行相加,那很多数上面只有一个数据I怎么办呢?那你可以进行什么呀?比如说我可以进行倍数相操作呀,然后呢,相加相减呀都可以呀,比如说这样我们获取了基数之后,把每一个基数再乘以五行,不行,那你可写乘以五啊,空格乘以五,所以你前面这个it取出来之后是可以进行运算的啊来你看这次就不算是二十四六八十了,是不是每个人都乘以五对不对,嗯,你乘以十也行啊,你高兴就行,你加二也行,你随你高兴啊,右键运行变这次乘以十了,是不是24和68是100是不是就可以了,上面这个也是一样,不过我就不多额外的赘述了,好吧,这是我们的多循。
38:42
环推导式,那它是结果变量啊,等于我们的中括号里边,比如说做一个变量1IN我们的什么呀?列表一。做一个写错了,做一个变量二。
39:03
二一我们的列表二啊,你如果需要把列表一和列表进行一个拼合操作,你可以在这里边变量一啊,空格变量二。不是说写空格啊,变量二进行一个相关的运算,这里边可以写运算啊运算你爱写什么运算就写什么运算无所谓了,但这个变量一和变量二你可以同时提出来进行一个操作啊,加也好啊减也好啊,乘也好,出也好,那是你的运算,我就不再多额外的说法说法了啊好了,那接下来那我们多循环推导式可以加判断条件吗?可以,所以最终极的是我们的带有判断条件的。带有判断题写错了啊,判断条件的。多循环推导式。多循环推导式,不过这个需要借助一些函数才给大家写例子啊,那么它的解用法是什么呢?其实也不难啊,就是把你上面这个多循环的操作在最后的位置,再加上一个条件表达式就可以了,如果你有什么条件的话,你可以在后面加啊,你可以在这后面加就可以了。好了,我给大家举个例子行不行?因为举例子的话,我先给大家说一声啊,需要用到后面的一些函数啊,比如说我现在还是使用多循环推导式中的红橙黄青蓝紫这两个颜色进行操作。
40:28
好了,看好了,我们写上带有判断条件的,带有。判断条件的多循环推导式。可以导式行不行?然后在里边两个颜色有了,我想干什么事呢?注意看好了,我想把它们索引相同的进行一个连接,索引不同的就不连了,也就说我要青和红,橙和蓝,黄和紫这么三个数据就行了,我剩下的都不要,那这时候该怎么操作呢?首先。写一个结果变量result等于for一个I in1,这第一个变量嘛,是不是for一个j in color2啊,第二个是不是也可以循环了,是不是?好,那我们要求什么东西呢?要求只有在第一个的值和第二个的值索引相同的情况下,那这个判断条件怎么办呢?那我最起码得知道红色在这个color里的什么呀?索引编号是几吧,是不是?那这个我需要用到一个新的函数,大家还没学到啊,怎么做呢?看好了,是我们叫做。
41:28
If。叫做叫做colors 1.index好长括号写上一个什么呢?I,这里表示我要检测I在一列表中的一个编号啊,所以编号如果它等于等于我们COLOR2里边的G的编号。的时候是不是符合要求了,我们就把这个I和J提取出来,做成列表,并且把它们进行一个简单的连接,啊,在前面我们做一下连接吧,行不行,来里边I啊,加上这。
42:05
来you,在这里边打印结果就可以了,我们可以在里边打印结果,Print我们的result,你会发现其实最终结果只有三个的,红和青,橙和蓝。黄河子看见没?黄青成来黄子就是带有判断条件的,都喜欢推导式的一个应用啊,当然这个运算我说你可以干什么,随你便啊,你甚至可以什么呀,我中间再加一个横线,或者加一个其他的符号进行一个连接,你高兴就可以啊,来横线横线,那这个时候红星之间就会有两个横线了。看见了吗?好了,那接下来的话,关于什么我们的循环推导式就为大家介绍到这里边,我相信大家对于循环推导式或者叫列,或者叫呃,什么循环推导列表推导式列表内涵应该有一个比较好的了解了吧,注意啊,列表推导式是我们平时程序员的叫法,书中的翻译,因为翻译人员并不一定程序啊,所以翻译的很多叫做列表内涵啊,这个想要大家注意啊。好了,那么本小节内容我们就到此结束,下一小节我们大家讲解列表的最后一部分内容,列表的常用方法,也就是列表函数啊。
我来说两句