00:00
回忆一下,回忆一下一下这个next在这里面作用是啥?执行从开头到下一个务的,然后再执行,就是从这个执行到下一个,对不对,那next就是下一个。好了,接下来我们来讲来零三叫散啊,单独拎出来send send什么意思?发送,发送对吧,这个玩意说叫发送,哎呀,这个怎么讲呢?就传送啊,传送些东西,那么首先我们来定义一个这个玩意B来,就是print叫苞米茶粥。苞米茶粥,大茶粥子苞米啊,这个东西你要如果去东北的话,真的强烈建议你去吃啊,返回什么呢?返回个幺幺,然后再打印一个,比方说护理保物理,然后然回二二,然后bring再来一个叫啥呢?叫大麻花啊大麻花来个三三好了,这是很普通的一个生成器,很普通的一个生成器,然后接下来看好了,我想生成器一步一步的往下走,我必须得去先拿到生成器,等于放,等于fun,然后这一点怎么往下走,Next对不对,然后print,我打印啊,Print这点杠next来往下走,Print这点down down next啊,我把它写两个,还有一个三个啊三个来右键运行一下,现在应该登。
01:43
能看得懂吗?这个好了,能看懂之后,紧接着看好了这里边的next,让程序往下走一行,那么看好我把这个next看啊,除了第一个next,我把第二个next给它换一个词,换个sand,换个sand,那你看一下效果走你。
02:00
在这报了个错是吧,来往里面传个一啊传个一走你。看这我这个东西是不是可以接着正常的运行,是不是可以正常运行,那也就是说这个send和这个next是不是很像啊,是不是很像,好了,来看一下next和send它们有什么共同点,看到了啊,刚刚next和send共同特共同特点,哎,Sorry,叫sand来next它可以看,可让什么呢?让生成器向下执行一次啊,执行一次send也有相同的类似的功能,看到send也可以啊,也可以让什么呢?生成器向下执行一次,它们俩都可以让它正常的执行一次,因为我们通过这个打印能看到这个物理能出来,是因为那sound对吧,是因为那send好了,那么send和next有什么样的一个区别,Send它有一个自己的一个。
03:05
功能什么功能呢?看好了这里边我们的右的这个位置看看啊右的这个位置可以写个这玩意儿A等于啊这地方来个B等于这块再来一个C等于看好了这地方,这地方A等于来想想等于号是咋回事来着,就值把右边的值复制这左边对吧?那么现在想想的本身是什么意思,右的什么意思,是不是返回相当于返回了,相当于瑞特对不?这个值返回你返回怎么赋值呢?合理吗?这个合理,你返回我本来就是我返回一个,然后我这里面写的返回幺幺,返回幺幺,然后你要把返回幺幺,又前面来一个赋值,是不是有点懵逼啊,对不对?看好啊,这个地方听好啊,它是分段执行的,怎么执行的,看好了,我这个地方首先第一个执行的next next没得说,从这头开始,从这块开始执行,执行这句话,执行完了之后,它返回是这一块东西看好了只撑到这,也就是说前面那个A等于在第一次next的时候没有用,没有用,没有任何作用,没有任何作用,那么也就是说第一个next是从头开始执行,执行到第一个义务的一返回完事了,完事了,所以我这块正常接收到的东西就是啥呢?就是这11看好了,这块接收到的就是这个11,然后再往下走,你注意看这块来个G点。
04:44
Next这块来个GG点散,它一散,听好本身的意思也是从当前这个位置接着往下走,走到下一个右的,也就是说你先不管散的是啥,你就当它是next,哪怕是next,那它也应该执行哪呢?看好了,它要执行这一块的东西,加上下面这一块,再上底下这个I的22,这能理解吧,能理解吧,就当它是NENE斯的话,效果不就是这样吗?不就是这样吗?就是我给你换个颜色啊,换个颜色来换,换个绿色,绿色来第二个这个散的,它执行的效果应该是从这块开始,然后到这个位置,然后到这个位置结束,我现在用绿色圈起来的部分是你散的执行的部分是不是这样效果,哪怕你是next的是不是也是这样效果,对不对,就是从上一个右结束,完了之后接着。
05:44
下走,接着往下走,正好走到下一个右的,所以它执行的是这块位置,那么散在这里的作用,第一个作用就是让它从上一个右的结束的位置,接着往下走,走到下一个右的,这跟ne是不是一样的,是不是一样的,然后它还有一功能,看这我这块是不是有个负值啊,看这是不是有个负值啊,负值什么意思,你是不是这个地方Y完了之后,它想返回一个东西,要把这个值赋值给这前变成A,是不是负值给它变成A,所以这个send的第二个工作,第二工作就是当你启动执行下一个use的这期间,首先先往这个位置去send去发送一个值,去发送一个值,那么也就是说这个位置给的这个一会发到哪去。
06:33
放到哪去放到哪去,来再说一下啊,再说一下比较绕啊比较绕,这确实绕看着好了,首先我用红颜色的先给大家圈一下啊圈一下首先我第一个这个P等于fun,首先是让它去拿到它的生成器,没问题吧,拿到生成器之后看好了,拿到生成器之后我去执行了一个这一点杠杠next的,那首先得从整个程序开始这块去执行,执行完了之后再往下走,应该走这一段看啊走这一段,因为你读到右的它就干嘛返回值了,而我们的负值操作,先算右边后算左边对不对,这个右边把右边的值负值的左边,所以右边一算,直接咔来一右的,意味着它要返回,它要返回的话,这返回多少返回多少,11,它返回11,这打印的是多少?11 OK,这块打印的是这个11,然后再往下走,我换个颜色。
07:34
再往下走在哪了?是不是刚到这个这点散是到这了,对不对,来这点它本身的意思就是所谓的next,好,Next意味着是从上一个U的开始执行,执行到下一个U的结束,那OK,从上一个U的这个位置开始,是不是就是这块位置,是不就这个位置,因为这个这句话被拆成了两部分,一部分是上一个U的返回了,下一个是左边来个负值,是这样的吧,咱先不管这值哪来的,到这个A等于,然后还包括这狗物理包,包括包括对不对,再往下走该哪了,是不是到这个U的了右的22好了,这个位置看好了,这个置我们接到的东西是多少,是不是就是22,所以这块我能打印的看好了,这个打印的是哪呢?是这个22拿到的是下一个U的值,因为本身next就这个作用,然后这send是干嘛的,看好了你本身这个A。
08:34
这块是不是得有个值才行啊,就得变量赋值嘛,A等于多少号,你得给个值,那么这个值从哪来,从这个散来,散啥意思?发送,发送怎么发呢?我把这个一发送到到哪呢?下一次执行的那个位置,也就是说它会把这个一看好了,把这个一它会给你发送到这个位置,发送到这个位置,那么这个时候你的A得解,A得解,A得一啊,也就是说这个位置看到了,散本身的意思也是接着往下走,但是散还有一层意思干嘛呢?给上一个U的那个位置去传一个值,给上一个U的那个位置传一个值,那OK,这个时候它会把一赋值给前面这频道这变量A啊,A的值是解,A的值是解,A的值是一,然后往上走,正常走的话该走到22。
09:34
来到22,紧接着我再执行G点杠杠next,这是啥意思?从B这个位置开始对不对,从这开始到哪下到哪,到下一个右的是不是到这个位置,是不是到这个位置对不对,然后这个位置我可不可以散,这块行不行,可不可以写散可以为啥可以写send,因为你这个这个位置上一个you,这个位置可以复值对不对,对吧?所以我这块可以用send,也可以用next,来我把它拿过来。
10:06
走你啊,看这。我把它跑一下,结果现在看着都是一样的,那么我在这儿可不可以干嘛呢?打印一下A,看A是不是一是不是就可以了,对不对,来走。看这A是不是一是是不是一是这一,所以send在这块就出来了,看好啊,Send它的另一个作用,给上一个U的YL干嘛呢?传一个值啊,给它可以传一个值,那么这是u send它的一个作用啊,它的一个作用OK,那么接下来看好了,我把这些东西啊全部都给它换成点sand传一个R,然后再来print g点三来一个三,那你看好这时候是什么效果,来,我把这个B呀挡一下B,然后呢去挡一下这个C来。
11:04
跟一跟啊,咱们再跟一跟,你注意看啊,你注意看。来,我拿这个笔画啊,拿这个笔画首先看好了第一个位置,首先先分析一下为什么第一个位置我不写散,这雨说怎么回事,不了,下面没有传接的地方,错,你说的有点对,那有点不对,看着啊,原因是你一开始拿到生成器,生成器是不是在最上面对不对,那最上面的话,你现在想给上一个右的传值,上一个U的有吗?它现在就是最上面对不对?所以第一个位置我们只能用啥呢?只能用next对吧?然后接着往下走,再往下走的话,该是这一行来G点三,首先先说这个g.next它会跑到哪。往哪出来的是什么?是大茶周,到这个位置能看懂吧,是这个位置啊,返回的是11,打印打大茶周,然后返回11,我们打印11看到了,现在的结果应该是大茶洲11能看到了吧,然后再往下走,走到这个G点,散的一,好家伙看见散的一,他会把一传给谁,传给这A呢?A等于一对吧,把A扔进去,把这个一扔给这A,然后紧接着打印的这个AA的解得一,然后呢,打印什么狗不理,然后呢,执行到右的22来这一块看好了,我把它包起来这一块东西,这是不是第二个散,第一个send,就send这块达到的结果对不对,运行的效果,然后再往下走,该是该塌了吧,对不对,它的话直接二过来,二过来是不是传给这个B啊对不对,给这个B,那是二,传给这个B,紧接着去打印这个B打印的是二,然后打印大麻花,然后U的33是不。
12:56
第二次散的结束了,对不对,所以这块括起来看啊,这个散的到这块啊,是这么画的,是这么画的,然后再往下走,诶来个G点,三的三,那这个位置C的解C的三,好了,把三扔进去,三扔去之后直接去打印这个C,它要找到下一个U的,又没有下一个you的,没有没有报什么玩意儿,Stop,记住吧,Stop OK,来,我把它拿过来,来运镜片看看是不是我们推想的那样,看着三能看到吧,因为我这最后打印了三,然后找不到最后一个东西到stop stop,但是这个地方你可以看到。
13:39
啊。什么报到上面不是不是这个我跟你讲,你看他报错大碴粥应该是第一个被打印的,但是上面是给你来个这个看到了吧,这东西不要纠结,它一旦报错的吧,这东西不可预知啊,不可预知好了,这个地方这个散听好啊散它的作用就是干嘛呢,可以让生成器向下执行一次,并且它可以给上一个U的传值,既然是给上一个U的传值,那也就是说第一个位置第一个啊you的第一个什么呢?不能吧,直接写吧,不能用S,第一个必必须用谁啊知道对吧,然后呢,还有一点就是最后一个位置要不要传,只不要最后一个要不要传,只要不要传,只不要,因为你传了值之后,最后一个地方既然传值,那一定会干嘛呢?会报错,你一定会报错,因为你最后一地方传值,他要找什么呢?找下一个右你已经是。
14:41
最后一个了,后面没有了,后面没有了,他一定会报stop,但是值是可以传进去的,你能明白啥意思吧,值是可以进去啊,OK,那么就说最后一个,最后一个也不要传值啊,也不要传值,OK,这是我们的这个send,它和next的一个区别啊,Next的一个区别,OK,接下来啊,接下来。
15:08
啊。来这个程序。看来这个同学去分析它,然后告诉我最终的一个效果是什么啊,拿笔自己试一试,敲里马谁呀,六九刚刚才还是还是还是还是小老虎呢,看这首先啊,这个坑一定要得先踩一遍。对,现在执行完之后什么效果,现在执行对,现在行完什效果没效果,没效果没效果,对啊,现在没住狗不理来看好了,G等于E去吃啊去吃,那么吃的时候看到了,我现在直接是拿生成器,这是生成力函数,直接拿生成器,所以它不会执行,它只会拿到一个生成器,所以你运行什么反应都没有,什么反应都没有,然后紧接着来这地方G点刚刚next这一块会直行在哪块,一个馒头它会执行这些东西,首先是我吃什么对不对,然后还有什么返回一个馒头执行是这一块对吧?是这块好了,那这时候运行,现在能看到的只是我吃什么对吧?我把下面这个猪翅打开,那就是馒头啊,接到的是馒头,好了,这一块接到馒头之后,紧接着再往下。
16:48
走,再往下走,这块GN点三的胡辣汤,他把胡辣汤给我塞哪去?是C这个位置对不对?塞个A,那A等于什么胡辣汤,然后返回大饼对吧?所以现在拿到的是胡辣汤和大饼啊,大二呢。
17:05
大饼啊,韭菜盒子啊,然后看好了,现在胡辣汤拿到了之后,这个位置它会执行哪?首先你要知道它执行的位置是这一块,它执行的位置是这一块,是从一块开始往下走,走到下一个右的啊,走到下一个是这块东西啊,是这块东西,然后往下走,再走的话,它是狗粮,狗粮给谁给这个B对不对?B打印等于狗粮,然后返回韭菜盒子这一块拿到RET3等于啥?韭菜盒子,韭菜盒子看一下走,你没吃过韭菜盒子,没吃过韭菜盒子,没吃过粮了,来再往上走,再往下走,该谁呢?该下面这个了,最后一个把猫粮发过去,发到哪去呢?发到韭菜盒的这个位置,对吧?猫粮,那么粮等于。
18:06
BC等于MORE0,然后就gameover了,对不对?好了,返回拿到的是什么这块最后拿到的是gameover,然后OK,最后拿到gameover,整个程序结束,整个程序结束啊,坑的没坑啊,哪有坑啊,是这个顺序,不啊,我不说坑,你能认真写吗?啊没报错,没报错,为什么报错啊,我最后一个you gameover返回到这个RET4之后没了吧,没对吧,整好完事了对吧,我没有下一个怎么G点干嘛点干嘛散,我没解send也没写next,它当然不啰嗦了啊好了,这个地方就说到这,那么这个程序跳这个程序是我们那个send跟you的一个,怎么讲呢?一个不是send跟next的一个区别啊,一个区别好了,这说完了之后往下看好了,下面就是send跟next区别,Send和next都可以。
19:06
这要生成器往下走一步,Send可以给上一个I的位置传递一个值,不能给最后一个I的发送值,因为最后一个U去发值的话干嘛呢?它就报错了啊,你再往下走走不了了,对吧?就好比我刚才写这个程序,诶,你最后是散的,为什么它又就不能发呢?看好了最后一个右的在这呢,在这呢,这个位置我可没往里面传值,能够发,没往这传值啊,OK,那么再往下走,在第一次执行的时候必须得用谁呢?得用next,而不能用S,因为没有上一个啊,没有上一个,好了,生成器这个说完之后,生成器可以用负循环来循环内部的元素,这给你们看过了,记得吧,这个啊,它可以用负循环,因为它是可迭代的。然后接下来我要讲一个这里边没有的知识点,就是我把生成器里面东西怎么给它转成一个列表,怎么给它转化成一个列表,你注意看,你注意看。
20:03
啊,来一个funk a deff funk,然后呢来个Y1摇,然后呢,Y Yi啊22YI33YI44啊一样的效果,现在P等于放等于放,它现在是个生成器,然后生成器的话,我想给它转化成什么呢?转化成列表的话,听好了我可以这么干啊,List等于list小括号来个G啊来个G,这个list是本身什么意思来着,List咱说你想把它转化成什么,拿个什么东西扩进是不是就可以了,对不对?所以我们用的就是这样的一个操作,直接list走NY,看这我拿到了123344是不是也这些东西,但是这个list里面要求必须给啥呢?可迭代对象,这里面必须给一个可迭代对象,这可不可以迭代啊,所以这是生成器,生成器又是迭代器,对吧?可以迭代好了,这一点说完之后。
21:03
啊,咱们一会儿去建一些笔试题的时候,这就方便多了啊,方便多了,那么你仔细看一下,在这个位置我有没有手动调用过它的next函数没有,但是这个位置是不是把每个东西都拿出来了,那你仔细想想它的内部是不是一定会跑next,想想是不是这样的对吧?内部一定是跑next,因为生中器巧拿指只能通过next来往后拿纸啊OK,最后这一点就可以了,然后接下来咱们去看下一个内容啊,下一个内容那你们可以把刚才讲的send next这多东西都可以统统忘掉了啊,接下来说这东西跟他没关系,没关系,来,下午再想起来啊,想起来来,想起来了,想起来了,没事给你留作业,你能想起来的来第四个内容说一下推导式啊,推导式,推导式这个东西啊,怎么讲呢,如果你不会推导式,我告诉你不会推。
22:03
教式你一样一样可以写程序,一样可以写程序,就好比那个三元运算符法,记得吧,对吧,那玩意你不不会写,不会写三元运算符,那么你能不能写正确,能写都写零慢呗,对不对,为多两行代码,仅此而已,对吧,一样列表导式各种推式都一样啊,都一样,那么推导式首先给大家来说一个这样的一个呃案例吧,说这样一个案例,那么现在我要求你去帮我想办法生成一个列表,生成一个列表,列表里面装什么呢?装一到14,装一到14,那就是说一二三四五六十八九十一装到14,那么怎么去写这样的一个东西呢?生成列表,哎列列表啊里面把里面。说一到14的数据,一到14的数据,咱们不是14期嘛,对吧,从第一期数数到14期是吧?那怎么来去写,看好了,准备一个列表,等于这个玩意,然后four I页从一到11~15对不对?然后呢,拿到每一个数例子点a panda好了,点A加个什么呢?加个I,那这时候我拿到的这个list,它就是个什么,每个一到14对吧?好了,看一下一到14,这是出来了对吧?我们现在用几行搞这个事,12344行对吧,四行考这个事,然后我想把它变化一下,我把变化现在是一到14,我想想PYTHON1 python21直到PYTHON14,那这应该怎么写。
23:48
重写这里面是不是改一改啊,改成Python,然后百分号S可以吧,然后空格来个百分号空格,这就OK了,出来PYTHON11直到PYTHON14,那这个就是我现在啊,通过循环来搞定的这么一个事儿,也是12344行代码对吧?那么这个是我们不用推导式就直接去用程序来写的这么一个东西,那么接下来我来讲一下推导式,列表推导式应该怎么写,首先先说一下列表推导式,它最终最终给你的是什么呢?是个列表,最终它给你的是列表,列表推导式拿到的是列表,字典推导式拿到的是字点和推导玩意是吧?那对用于集合推导式拿到什么集合,哎,就这么个玩意,那么列表指导式最终得到的就是个列表,那么列表指导式它的语法,先说一下语法,语法是这样的,首先列表用什么表示来着,方括。
24:48
对,方法list啊,没错没错,方框表示的是列表,那么方括号里面看好了是这样一个东西,第一个位置写什么呢?写最终结果,然后空格for,看着for变量,然后呢,In后面一个集合也好,或者一个迭代器也好,或者可迭代对象啊,可迭代对象符号啊,没了没了没了,这就是一个列表推导式的一个语法,一个语法,那么最终结果里面我们可以使用中间的那个变量啊,可以使用这里面的变量,那么接下来看好我用列表推导式来去完成上面的这个工作啊,完成上面的工作,那么接下来看好,看好我的语法里面要求你才两个list等于方括号,那么方括号里面放什么呢?第一个位置放最终结果,我最终结果是不是Python什么什么玩意儿,是不是这样的,所以对最终结果。
25:48
推写哎,来个Python,后面百分号S,然后呢,空格百分号,然后什么然后什么,然后I对不对,我这里面上面是I对吧?这里面可能一会也出I,然后for循环for I in什么从哪到哪,从一到15好了,这样就是一个列表这道式,这样就是个列表这道式,你仔细看一看这些个代码跟上面这个是不是很像,是不是很像,只不过顺序顺序是串的对不对?来看好了,它是怎么跑的,它是首先在后面啊,在后面生成一个II里面东西是什么?是从一到15,那就是1234564开十数到14,然后把这爱分别拿到前面这个位置去干嘛呢?组装出你列表里面到底要装的是什么样的玩意儿,到底你要装的是个什么样的玩意儿,我最终列表里面装的是不是这样的东西,看这这样东西那。
26:48
拼背PYON100分号S,然后百分号,这是我最终要的结果,那看一下现在我的list长什么样,走你是不是一样的,是不是一样的,那你想想刚才写了这么一大堆的东西,现在变成什么呢?一句话啊,现在变成一句话,那你看看功能跟上面是不是一样的,功能是不是一样的,一样的就是换了个写法啊,那OK,我现在不想往列表里面放这么复杂东西了,就给我放从一到14怎么办?哎,当就是爱,就是爱,爱这里面不就是从一数到14吗?对不对,就这么个玩意啊,就这么玩。OK,接下来把这个去写一写啊,这个也写一下啊,这个写,这俩都写一下啊,写一下熟悉一下新的这种语法啊,是不是内部法老师扣这啊,来第一个获取百以内能被三整除的数,首先来个例式的LST,诶,LST等于从100以内能被三。
27:48
正能数来个I吧,对吧,然后呢,For I in range 100以内一到100是吧,一到一百一百零一,然后后面是if,如果I余上三等于等于零是这个吧,对吧,被三整除的数好了,接下来第二个100以内能被三整除的数的平方跟这个的区别就是你拿到这个数之后,让它算一个平方对吧?平方怎么玩完了是不是平方啊?或者说你怎么先行二整行吧都成啊,整数行么?是先整数再平方。
28:30
整除的平方,对呀,我这不整除吗?要的是整除啊,是先平方300以内能被三整除的数的平方,对100以内能被三整除的数的平方,能被三整的数不是I吗?I的平方乘I写反了,你写反了怎么写反的先?住这个语法,其实前面最终结不行,我没想通你的你的逻辑啊,来看一下这个底听好啊,我重点是说这个题,这个题想想如果你用正常的普通负循环写的话,兄弟们,你要普通的负循环写的话,你是不是要循环一下这个整个大列表对吧?循环大列表的话,你是不是能拿到这一个东西和这个东西,那每个小列表是不是还要再一个循环,启动循环,这样对吧,所以写起来也一样,我最终想要的是名字,所以我可以直接来list,等于什么方括号,我要的是名字对吧?名字里面for第一层循环,我是不是要循环这个列表了,对不对?来,我就把第一层叫first first,然后呢,In哪,Names,我现在拿到的是哪?这个first是什么?是不是小列表啊,然后再往下for什么。
29:52
Name in,然后再去判断什么样的首我要的名字里面有两个E的,怎么判断name点框着谁E怎么办?得大于二对不对,大于等于二,大有俩于等等于,这个就是一句话搞定这个事。接下来打印这个list来,最终出来的是son斯蒂N,这是什么?Jennifer啊Jennifer OK,都是带了两个亿的,带了两个亿啊,怎么了?羡慕我的英文是吧?不用羡慕我的英文很烂的啊。好了,这里面听听好,如果你涉及到多个循环的话,你就正常写第一层要干嘛,第二层要干嘛就正常写就可以了,懂吧,其其实仔细想想。
30:52
你想想我们的这一坨东西,这一坨东西其实还是后循环那坨东西,只不过最终的结果给他提哪去了,提前面来了知道吧,就把最踪的东西挪到前面来,其他的跟复习况,你要正常写的话,也是这个流程,也是这个逻辑,只是内膜放里面啊放里面OK,这个是这个题啊,这个题OK,这是列表推导式,列表推导式,那么列表推导式的最大特征就是直接通过循环也好,通过什么也好,直接给你这些个数据,帮你组装成一个列表,就好比说现在你想要1万件衣服怎么写,还记1万件衣服不,1万件衣服怎么写list等于怎么写方括号对吧?衣服衣服百分号S,然后百分号I I in来多少,来1万可不可以啊,可以,这是1万件衣服,1万件衣服。那一次性帮。
31:53
生成出来,那OK,还是这样生成的东西啊,还记着那个结构公司那故事吗?对吧,一次性拉了1万件衣服,你得找地存对吧,再摆,那怎么办呢?最好是把它变成啥生气对不对?憋生气,我要一件衣服给我一件衣服,要一件衣服给我一件衣服,能懂啥意思吧?所以我们说列表推导式,它的一个怎么讲呢?缺点就跟那个列表是一样的,就是一次性给你太多的东西了,太多东西了,比较占内存,比较占内存,那么想办法,我只要把它变成生成器,是不是这事就好多好好多了,对吧,OK,休息一下,休息一下,回来我们讲生成器表达式啊,长得跟它一样,休息会啊,精神精神。
我来说两句