00:00
那除了我们这个field和map,我们再看一个哎,需要传递我们函数作为参数的,哎这么一个函函数或者说是方法啊,那之前我们在讲列表的时候啊,我直接在这写了啊我们说过一个这个哎,Sortt,哎,Sort这个方法它是干嘛的呢?哎,Sortt它用来哎该方法用来对什么呢?诶用来对我们这个列表中的元素进行什么呀,进行排序啊进行排序,那比如说我来整一个列表啊L等于一个中二,我们来一个这个呃,BB,然后这来一个A,然后来一个这个CCCC,然后这来一个bdd,哎这么写吧,改一个啊这来长一点啊三个A,这来一个两两一个C啊这来诶好几个D是吧,然后呢,这来这个呃三个F啊随便写这么一个啊是吧,这么一个列表,那现在我要想给它排序,之前我们说过了,直接调一个L,点一个这个sort啊,点一个sort,然后这个时候我们再打印这个。
01:00
L我们来看效果,这时候a ABB CC DD FF对吧,就排完了啊,就排完了,那这个我们说了,它也可以传一个什么呢?回这个函数作为参数,那注意了啊,我们来说一下,哎,我们这个so的方法,So的方法它默认是什么呢?诶是直接比较我们这个列表中的一个什么呀,元素的一个大小,所以注意它默认情况下就是比,比什么呢?BB跟AA谁大,AA跟C谁大,然后C跟这一堆D谁大,B跟这一堆F谁大,就是直接比这个字符号大小,其实它用的就是什么呀,小于号这一点,其实如果你加一个元素,你加个一,其实你能看出来,我一执行它是给你报错了,告诉你小于不支持什么呀,整数跟这个string之间的一个比较,它是不是已经告诉你了,哎,已经告诉你了,所以注意它摸练情啊,就是用小于号进行比较的,或者说它其实总是用小于号进行比较的,哎,但是这个时候呢。
02:00
既然是小于号比较,当我们去比较两个字符串之间的大小的时候,它比较的是什么?哎,实际上是不是就是比较的是我们这个字符串的一个这个UNI库的编码啊,诶unix编码,那假如说我不想比较字符串unix编码了,哎,我想比较什么呢?哎,我想比较是字符串的长度呢,比如说我希望谁短,比如说C短,C在前边,然后B,然后是F,然后是A,然后这一堆B,我希望根据字符号的长度来排序,那这个时候要怎么办呢?要怎么办呢?那注意了,哎我们说了在什么呢?哎,在我们的这个sortt中,它可以什么呢?它可以接收一个关键字参数啊关键参数谁呢?哎,我们叫做一个key啊,Key就是也是关键的意思,对吧?关键字参数叫做一个key,诶,Key它什么呢?哎,需要一个什么呢?需要一个函数作为参数啊,需要一个函数作为参数,那我们说了那函数作为。
03:00
参数有什么用啊?哎有什么用啊,那我们说了,当哎我们设置了函数作为参数,哎,其实你会发现其实都是一个特点啊,一个特点什么特点啊,你看当我们在这儿传了一个函数作为个参数的时候,这个函数是不是会对被调用啊,哎被调用每一次调用是不是都会传递我们列表中的一个元素作为参数,哎作为参数啊,所以注意,当设置了函数作为参数,它干嘛呢?它每次都会以我们这个列表中的一个什么呢?哎中的一个一个元素作为参数来干嘛呢?诶来调用我们这个函数啊,来调用这函数,那并且什么呢?哎并且将哎并且使用我们这个函数返回值,哎返回值来干嘛呀?哎来比较我们这个元素的这个大小,说这么多什么意思啊,也就是说当我们去传了K这个函数以后,之前。
04:00
我们说了它是不是直接去比较我们这个元素啊,哎,直接比较元素,但是当你传了K这个参数以后,它比较的就不是元素了,比较的是谁呢?比较的是你这个函数的返回值啊,比较是函数返回值,比如说我们举个例子啊,看着我直接来个KK等于什么呢?K等于一个Le啊Le还记得Le这个函数吗?这个函数的作用是不是来获取我们一个序列的一个长度啊哎,长度,那Le它需要一个序列作右参数,它返回的是那个长度,所以当我传一个棱作为参数的时候,它会每一次都会掉啊叫什么呀?哎,用BB作为参数调论,用A作为参数调,用C作为参数调论,用它作为参数调论,用它作为参数调论,每一个作为调一次,那注意调完N以后,它返回的是什么?哎,返回的是我们这个列表这个序列的一个长度,如果是BB返回就什么返回的就是2AAA返应就是什么呀,4C返应就是一,它返应就是它的长度对吧,FF返回就是一个三。
05:00
那这个时候再排序注意了,就不是根据他们的内容了,而是根据什么,根据他们的一个长度啊,长度这时候我们看效果啊,看效果直接一保存一走一个,你看C在前边B,然后是F,然后是A,然后是D,就干嘛了,根据长度去排了,那这里边我们用的也是一个什么呀,高阶函数我们是干嘛?诶用这个函数作为参数啊,昨为参数这里应该能看懂啊,应该能懂,或者还有一种用法干嘛呢?看着了,我直接来一个LL我等于什么呢?等于一个中号,我可能有一个二,然后有一个五,然后这呢有一个一,然后有一个这个十,诶或者这么写一个也写一个三吧,然后这有一个这个哎六,然后呢,这儿还有一个这个四,像这个东西,我们如果掉色进行排序,其实很明显排不了,因为这里边是不是既有数字又有字符串啊,数字跟字符串没有办法直接用小于号去比较,对吧?没有办法直接用小于号比较,那怎么办?那怎么办?哎,那在这里我们就可以传一个KK,等于什么呢?Str,或者等于int,如果等于str,它就会干嘛呢?把每一个元素转换成字符串,然后比较,如果写int,就是把每一个元素转换成整形,然后再比较,那现在我先写个int,那这个时候我们再来看走一个是不是就能排了,哎,就能排了,所以我加了一个K,是不是给它做了一个类型转换,哎,类型转换,但是注意这个类型转换只是比较的时候转了,它并没有影响到我们原来列表里的一个元素啊,原来列表元素,那这个也是我们高阶函数的一个应用,我们这里主要说的一个什么呀,Sortt这个函数啊,So列函数,好,Sort说完了,然后还有一个啊,还有一个我们来说一下,还有一个函数叫做一个sorted sorted就是一个函数了,Sort我们说这是一个方法对吧?而sorted是一个函数sal这个函数,哎,这个函数和什么呢?和我们这个salt的用法什么呢?基本一致,哎,基本一致,但是它的不同是什。
06:57
嗯,哎,Sorted它可以什么呢?哎,可以对我们这个哎,任意的这个序列进行排序啊,进行排序,它不像我们这个salt salt是不是只能对我们这个列表进行排序,而sort可以对任意序列进行排序,并且。
07:16
哎,并且哎,使用我们这个salty的排序,它不会影响我们这个原来的什么呀对象,而是什么呀,返回一个新对象啊,新对象你注意我们用S的排序以后,我们L列表里边的值是不是直接就变了,哎顺序直接就变了,但是如果你用thirty的排序,那注意了L的值不会变啊,L还是以前那个它干嘛?它会返回一个新列表,那在这儿我还是拿它举例子,我们这整一个L啊,整一个L,然后在这我们来打印一下L啊L这是我们这个排序前。排序前排序前呢,我这来一个这个L,然后呢,我这直接来一个骚saled来一个L,调用saled来对我们这个L进行排序,那这个时候我们再来打印一个L,这是我们这个排序后啊排序后,但是这个很明显它是不会成功的,因为这里边我们是不是还是它是有字符串,有number还有number,所以在这儿呢,我们也可以传一个关键字参数,叫做一个什么呀?K诶比如说我来指定一个函数,诶,那这个时候它就会把每一个元素都转换成整数,然后再比较,这个时候我们来看效果啊,来看你看排序前排序后我们的L有变化吗?哎,没有变化啊,并没有任何变化,但是谁变了,S会返回一个新列表啊,我们直接打印一下它的返回值,直接打印一下我们这个sal的返回值,这个时候你会发现它里边的值是一个什么呢?
08:54
来执行一下,它里边值是不是就是一个排好的了,哎,就是一个排好的了,就这样一个效果啊,它可以对它进行一个排序啊,这个就是一个排好的啊,排好的所以这个sortity的用法跟这so一样啊一样,不同的是什么呀?它不仅仅什么呀,哎适用于我们列表别的元素也可以,哎比如说我L现在不是这个,换一个L变成什么呢?变成一个字符串,L等于一个随便写一个字符串,哎现在它是一个字符串,那字符串是不是也是序列呀?哎,也是序列,那它也能排序,我们来看一执行诶你看是不是也排序了,12233445667788,是不是也是可以按顺序进行排列了啊,按顺序进行排列的,那就是这样一个效果啊,就这一个效果好,当然这种情况你传不传这个T都行啊,传不传这个T都行好,那这个就是我们说的一个排序啊,排序同样它也是一个高阶函数,那以后看到高阶函数用法都是什么类似的啊,将一个函数作为。
09:54
数干嘛来传递啊,来传递好,那我们之前说了高阶函数除了什么呀?哎,除了我们说了它可以拿函数作为参数,是不是还有一种是将函数作为返回值啊,哎,还有一种我们叫做将函数作为返回值,它也是一个高阶函数啊高阶函数,那这种函数是什么样的呢?哎,这种函数什么样呢?哎,我们这里先停一下,待会儿我们再来说第二种高阶函数啊,我们来停。
我来说两句