00:00
好,我们回家上节课内容,上节课做了排序的工作,一个字符列表,它是什么呢?它是OE,那么它里边有什么呢?5个字符作为列表项。可以排序吗?那肯定是可以的,排序之后呢,就按照order的顺序了。想还让他明确的按照order的顺序,就让他key=OR2D。Reverse=true,这个时候一运行它是确实是可以排序的是吧?如果说reverse in forces呢,还是可以排序的,但是前后颠倒了。那这个过程中我们可以看到什么呢?看到这个。CL这个列表的sort方法有两个参数,一个是key,一个是reverse。那他们在参数赋值的时候,这个这个等号两边需不需要空格呢?我们可以看一下P1P8的一个规定,不要使用空格在等号两边,当它是明确的是一个关键字参数的时候。
01:05
什么是关键字参数,我们我们这个其实就是关键字参数,就像这样的时候,这个就是。Correct, 而这个就是RA,我们其实以前也见过这种东西,对吧,比如print什么呀,ABC逗号空格,ICP结束符是。2个回车符。那这个其实叫什么。关键字参数,它的两边等号两边不加,搜CL这个对象的做的方法,其实就相当于搜list这个类的啊。所字方法,你可以看到这个里边的等号依然是两边没有空格呢,那为什么赋值的时候就得有空格,比如说A=5,这就得有空格,但这个它就没空格呢?问问AI呗,AI怎么说呢?AI说这个呀,一个是赋值操作空格提升可读性,另一个呢是关键字参数,是参数传递的标识。
02:06
没有空格呢,避免和赋值混淆,而且呢,本身调用的时候就挺长的了,你再加上空格,它又不太满足那个一行有80个字符的要求了,所以这个时候就加上空格,增加可读性嘛,美一些嘛,对吧?那么知道俩参数呢?参数的逗号后边有一个空格,哎,能知道这是俩参数还是有留白的是吧。为什么这个sort方法它里边描述的时候,Key就得放前面,Revers就放后面呢?他不是没有次序吗?还是有这么一个说法是什么呢?就是First things first.最重要的事儿放前面,哎,那这俩方法哪个是最重要的呀?我觉得是K,为什么呢?它是比较的核心,诶那你是用什么方式完成这个。你与列表项之间的比较了,那是你用key方式。
03:00
完成的这个比较,那么每次比较都是什么?涉及到这个key key是它的核心,Reverse呢是在你比较完成之后,是从前往后还是从后往前,这是两个事儿,哪个更重要,那显然key更重要,更关键,所以key呢排在前面,那么不光是这个函数,我们所有的这种有参数的函数或者方法,其实都有这么一个特点,就是重要的参数都放在前面。排序有这样一个问题,就是什么呢?假如说是一个成绩表,我按数学成绩排序,我就没法儿按照语文成绩排序,按数学成绩排序之后,我就把原来按语文程序排序的那个列表消失了。那就把它毁了,想。完成新排序就不要in place了,就在一个新地儿产生一个新列表,完成排序,这可能吗?不知道啊,问问。能否建一个新列表,不改变当前列表呢?他呢推荐使用什么呀?缩ATE的这么一个方法使用缩ATE,那什么是缩at的呢?不知道,那我打一个缩ATE吧。
04:10
它是一个内建的函数,哎,内建函数,什么是内建函数来着,我们可以喊救命,对谁喊啊。对,这个内建这个事儿。去喊救命,喊完之后呢,出来比较复杂,我要用D的方式去看,这老熟人还挺多的是吧,Input呀,ID呀。Help啊,是吧,DR啊,这些都是老熟人,他们都是。内建的函数。内线函数,那具体这个内线函数怎么用,我还是喊救命啊。Sorted.So, 它的三个参数,第一个是1ABLE。然后呢,是key跟reverse跟那个,呃,绿色点有点像诶。那为什么这个次序呢?仍然是重要的东西排在最前面,那你interable是什么可便利的对象?
05:01
排序的目标,你给谁排序啊是吧,你给谁排序啊。哎,那。对应list在sort里面就是self是吧,你就知道给谁排序了,你给当前这个列表排序呗。那现在呢,你不知道你得把这个列表什么之类的传进去。第二个还是key比较的核心,第三个呢是reverse。是否反转,那这俩东西是不是有点重复啊?一个是索的,它也这么参参数,而那个list呀,So呢,其实也差不多这三参数。啊,只不过这个东西是self。那这有什么不一样?这个list呀,是in place的。而那个sorted呢?其实什么是ta a new list containing all items from it ina sending order就是一个新列表,不是在原列表上直接修改。那怎么弄呢?String list, 第一个是1,第二个呢是3。
06:03
我们要怎么样呢?我们要把它。观察一下,它就是一二和三,那六呢,我们一个新列表让的是什么呀。然后它是缩的,它就直接调用,它前面不需要对象。然后呢,但是我把对象得传进去。想让它的关键的参数是Les。按照长度进行升序排列又是什么呀?先是一个长度的,再是两个长度的。它会不会影响到原来那SL呢。SL没有受到任何影响。如果是SL,点索塔。就怎么样了SL诶。SS点硕他。然后让他key,等于Le,他就怎么样,他肯定就受到影响,他就原地。翻转了。Sort的使用reverse是怎么弄的?哎,我们试一下让6等于。
07:00
缩腿的。P=LS,然后reverse=true,对吧,我们现在new有没有。你有就是。二长度2大于长度1。所以这就得到了个新列表。那所的函数它的时间复杂度是多少呢?用到了一种算法,是什么呢?Team thought.Team做的是什么意思?TIM是TIM Peters.PPS是谁,谁来着,他当时写这个Python之禅对吧,哎,是一个。Pthon之禅的作者,那Python之禅是什么意思呢?我们可以import this, 它是一种禅意的东西,以心传心,不设文字,直指人心。潘森之蝉都有什么来着呢?首先就是美,优美胜于丑陋,什么叫优美?这样它就好看是吧?它从长度上也省,它从区分的上也有,哎,它也符合PP的8的标准,也就是优美的,它的作者不但能写出list类的sort方法,还能写出SOK的函数,其实这两个东西是一回事,那它有什么不同吗?
08:15
首先就类型不一样,它是一个类的方法,另一个呢是一个内建函数。返回值不一样了。List似sort,它不返回任何东西,Sortate返回一个新的新列表,对原列表来说,那么就直接给它改了sortate sort就直接改了sortate呢,不改变原始的列表核心特点,Sort它它是节省内存,但sortate呢,保留原来的数据,这里面呢就有两个参数,一个是key,一个是reverse。那K呢,就是排序的依据。而reverse呢,是控制方向,在他们之前其实还有一个东西,那作为list so呢,它是一个self。而索ATE的呢?它是eer可编类的对象。
09:00
那这个里面提到的一些东西,比如说函数,方法,还有参数,这有什么区别呢?我们来总结一下,方法它是依赖于类或者对象的。啊,比如说s.reverse就是string list进行翻转,SL.sort呢,就是string list进行排序,它是依依赖于这个对象的,谁调用就修改和它相对的函数,它是内内建的,实现相应的功能,调用的时候你不知道谁调用。您到底怎么办?你把这个东西给传进去,就知道给谁排序了。还有一个呢,就是甭管是方法还是函数,它们都有参数,那这个参数呢,是函数的方法的输入的变量,那根据参数可以实现功能,比如说啊thought可以设置reward参数进对对它进行翻转,SL的sort呢也可以设置reward参数进行翻转。那这样我们就得到了一个有序列表是吧?有序列表,那我如果说我在这个列表已经有序的情况下,我再插新的列表项,就得讲究位置了。
10:12
插入之后依然希望它保持有序,那具体咋插入呢?我们下次再说哦,EZ交枪。
我来说两句