00:00
好,各位同学,接下来给大家介绍第二组list列表数据结构,首先老规矩,这是杨哥从官网上拔下来的关于list中数据类型一个全面的介绍,有兴趣的同学可以看一下。好,那接下来我们呢,直接。进入主题学习对应的操作命令。老规矩和之前一样,给大家整理出对于list数据类型、常见常用的操作命令以及它们的中文解释。它的特点是。当K多个value string是K1 V1,而这个是K1,后面有一堆堆的值,那么它的底层数据结构是个什么呢?我们来简单的大家看一下。首先。它的底层是一个双端链表的结构,相当于什么一列火车,一个一个的车厢,就是一个个的节点,那么它的容量也是这么多,干得出40多个亿的值啊。主要功能是。
01:02
Push和pop,那么就是压入队列和走出队列,一般用在这队列和消息什么队列的场景,那么它呢,分为双端,就是左边left和右边right,它都可以插入添加对象。如果这个K不存在,就会创建新的链表,如果K已经存在了,新增如果里面是个空的,那么对应的K也就没有存在的意义了,自动消失。所以它的底层呢,时长而言是个双端链表,两端的操作现在非常高,那么通过索引下标的操作,当然中间的节点啊,比如说它的可能中间插入一个稍微性能有点弱,但是呢也依旧是一个优秀的双端链表的实现,那么对于我们多指的案例,我们大家来看一下,首先。第一组l push l push l,那么这个L是left左。R right右,那么这个right就是从左边开始变列啊,那么我们呢,先来看一眼,大家请看l push,比如说LIST112345,下面r push,那么这个时候LIST2我就11 22 33 44 55 OK。
02:21
一个K就是五个,那么来吧,Type,大家请看LIST1什么类型啊,List类型OK,之前讲过K的时候是不是说过这个type命令,那下面怎么便利怎么取呢?像负循环一样的L,那么大家请看LIST1这个就start和stop,那么就是下标一般是零到负一,就是全部变列,如果从左边开始的,你输入的顺序是12345,但是它这块列表里面是五次31,那么同理,L假设是LIST2,零到负一的话,那么同学们请看是不是就是如果用r push,那么就是你怎么输的它呢?怎么给你变列,那么。
03:02
头和尾就像站一样的,OK,好,那么这是其中的一个,从左边进,从右边进,从左边便利,哎,那杨哥有没有从,既然举一反三,L push r push l range,那有没有r range呢?那么大家请看啊,我们的r range有没有没有这样的一个命令,所以第一组要明白它呢,可以从。Left right push,但是取的话只有l range,那么如果你要有疑问,咱们在这儿l range有吧,但是r range没有好,这是我们的第一组小命令的介绍,第二个L破和R破什么意思啊?就像站一样,是不是出对出站好,那么同学们请看啊,现在l push list1。L range list10到,那么假设负一是如果,如果零到二能理解吧,就是下标到多少,一般是零到负一全部变利,那下面l pop意思就是把LIST1这个K里面的一个元素给我弹出去,那么大家请看弹出谁啊?是不是五就走了?那么现在我们再来一次几是不是就是4321 OK,那么好,这是L破,那么R呢?那么就是相当于从右边开始弹,那么例子统一,同学们请看是不是下面这个就没有了,OK,好,那么同学们这个呢,应该是很简单,好,那么弹出去两个以后,零到负一全部变列是不是?
04:39
掐头去尾,通通没有了,好,这是我们的第二组第三一个。同学们请看,他做的是l index,按照索引下标获得元素,那么按照从上到下的顺序,它这个是啥意思呢?那么同学们lower啊,现在就是通过索引l index key和index,那么来吧,L index list1假设啊,第零个元素谁是四,那么。
05:06
第二个元素是谁?就是二,那么同理啊,如果是LIST2,另外那个铜右边的,那么第101个元素是不是就是时间,那么这个也应该就是什么,就像list按下标来取得值,那么下面L获取元素中。获取这个list列表当中元素的个个数,是不是有点像类似于我们的list加号里面的size ok1说大家应该能够懂。LL,那么LIST1这三个,LIST2有五个,好,下面再来看LMK数字N给定的值VE解释它什么意思呢?删除N个值等于VE的元素,好啊,这个呢,有点绕口,那么同学们请听我解释啊,Listen里面。它是允许有重复元素的。比如说啊,我们从left往右啊,L push list3V1V1V1V2V3V3V4V5是不是有重复值,那假设我想去重呢?我的意思就是说我对例子三,请给我删除两个VEOK,那么解释一下删除几个值啊,N个删除两个只等于VE的元素没问题吧,那么所以说呢,同学们我们不妨来这啊,那么和刚才一样,还是可以delete塔LIST1没问题吧,可以删的,那么下面l push list11111没问题吧,2223345,大家请看一跟二肯定是有重复值了,那么现在l range积LIST1,零到负一。
06:49
少写了一个一啊,那么零到负一有这么多多东东,那么好,接下来呢,咱们呢先删一下,结合我们的命令,同学们请看是不是L。
07:02
Rem,是不是remove,那么好了,来了rem remove哪个k list1删几个?比如说我删三个哪个元素,我这查了以后,假设12344个,我删三个已经存在一,大家请看,那么再变离一次,同学们漏眼以前是有四个一,我要求把等于一的值给我替掉三个,那么最后还剩几个,OK?好,那么这个是l left re,这个CH呢?它是K开始的索引和结束的索引,截取指定范围。的值后,再赋值给我这个K,注意哦,再赋值给这个K,那这是这是啥意思呢。请大家看啊,我们截取一下,意思就是说,如果说这个值啊,零到90个元素全部变列,从上到下,我现在只要三跟五之间的01234564。
08:04
截取过来是不是有点相当于list的sub string呢?OK,好,那么同学们现在呢,L假设LIST10到负一,那么同学们请看我这呢,是不是总共有八个值啊,那么L现在K是LIST1START,我假如说啊,我这呢就是四到。7OK,那么来同学们再来看一下01234567,那么同学们是不是2221这么说没问题吧,好的,这个是我们的,那么这个呢,也很经典,是个常用的啊r pop。和l push,那么相当于说有点类似于啊,它呢就会变成的是呃,两个链表。一个除去另外一个,添加到另外一个列元。
09:01
列表做破,弹出去目的列表l push再塞进去,好,那么同学们我们来看一下啊,假设现在有两个,那么我们出一个,大家请看这个L2,这个T出了一个。14,那么这个时候L2这个14出去了,放到哪,放到这个头上去了,这么说能跟上它有点类似于这样啊。OK,加过来好,那么同学们,我们简单的呢?来看一下啊,L list10到负一。L list20到负一没问题吧,那么这个R破。I push list1list2,大家。这个时候我们再来查看一下我们的LIST1,现在大家请看它这是不是相当于这个一从R破破弹出去了,那么再来我们来看看我们的LIST2,脑袋上这个一被弹出去了,是不是加到了L。
10:12
LIST2。这个头上啊,那么能理解了吗?从这儿弹出去一个从R破破l push,弹出去加到另外一边一个目的列表,好,这个就是我们的R破破l push,那这个时候就很有意思了,相当于说你要做消息队列进行消息交换的时候,是不是可以一出一加做在一个原子操作里面,两个命令可以合成一个来进行处理,好那么同学们请看l set key index value,这个很简单吧,一看就应该明白是啥意思吧,那相当于说对哪个下标来进行一个设置啊,那么同学们请看这么多,我想给二号的设成一个C加加,那么大家请看012,这是不是有一个好,那么来吧L,那么LIST1,零到负一没问题吧,那么现在我要做的是l set index么?这个K叫LIST1,下边我就选一,我这就写个MYQ,那么L大家请看LIST10到负一。
11:13
Q,大家请看0121号值给我设置成MYSQL,那么他们是不是2MYSQL21说明白了吧?好,那么这是我们的。L set命令,那么下面请看L。Insert key before after you值插入新的值,好,那这个意思是这样的啊,那么同学们请看l insert现在这个key叫例一,我现在叫比F,比F谁呢?已经有的一个值,比方说啊,那么请看啊,这个比负它说什么?已有值插入新的值,那么在我们的MYS前面插个加va OK,那么同学们请看,大家请看是不是在MYS前面。搞了一个加法,这个非常的好用,因为我们清楚啊,我们底层的数据结构是个什么?双端链表,有点类似于你在哪个元素的前面或者后面插入一个元素,那这个时候是不是列表来进行了一个修改呀?哎,那么我们会了before,那么自然而然after我们也就应该明白了,好,那么这个就是我们list这个数据类型常见常用的一些操作API,请同学们练习一下。那么当然面试中如果会问到你,那么对于某些数据结构的类型你怎么用的呀?那么大家想想。
12:31
我们这个list双端链表的这个list链表的这种类型用在哪呢?那么。一个key多个value,来吧,最经典的是不是微信公众号订阅的消息啊?同学们请看啊,假设大V作者李永乐老师和CSDN博客的微信朋友圈发布了文章,文章ID分别是11和12。那么杨哥在微信公众号上关注了李永乐老师和CSDN。
13:00
那么现在l push like我关注的文章,然后这个ID,那么比如说这个这个key是不是就是杨哥关注的,那么文章是11和12放到这,那么如果说我自己去查阅我自己的这个T,我订阅的全部文章,那么类似于分页零到负集全部显示,假设一次是是十条,那这个时候是不是L我这个K。零到九代表是什么?一次性是十条,那么。李永乐老师的文章ID11 CDN文章ID12,那请告诉我这个时候在杨哥的这个我所喜欢的微信公众号或者我所喜欢的订阅号里面,是不是把我最新更新的消息关注过的全部给我过来呀?哎,这个就是什么我订阅的如果发布了新的文章,把文章编号塞到我的这个key里面,我微信里面就可以实时的获得我们的这个key下面最新的十条我订阅的微信公众号那个红点点知道是怎么来的了吧?OK,好,那么同学们,这个就是我们的第二组rest。
14:05
那个我们的第二组就是list列表,那么请同学们敲一下这个命令。
我来说两句