00:00
上节课呢有两种赋值,一种呢是直接拿列表对另一个列表赋值,那这个就是一改全改,另一种呢是给他做一个副本,做了副本之后就各有各的空间了,那列表能相加吗?我们来看一下这个效果。首先呢,我们把这个代码呢复制出来,然后呢,在拍子里粘贴上去,我可以看到动次duts叫咚咚TS,获得了一个动'次dut,咚咚duts。那么动S次循环3次之后,那它再加一个咚咚大次,那就是。三次咚咚动次打次,一次咚咚打次,还有呢,就是再把这个这个东西作为一个pattern循环,循环多少次呢?循环4次,这都是没有问题的。那字符串加法有什么应用没有呢?有这么一个应用叫什么呢?四大名著大乱炖要制作一个PY程序,从四大名著里每一部里边儿获得仨角色,再把这仨角色对应的三事迹给他做出一个综合的列表,角色综合和事纪综合,那这两个呢,再混搭就可以了。
01:07
让AI帮我们生成啊,去运行得到一个什么呀,诸葛亮葬花,诸葛亮完成的事件是于葬花再执行一次呢,鲁智深。当然这个有点小问题,就比如说这个葬花,还有这个扑蝶这块啊,老有人名儿是吧,也可以。便没了对吧,就没了,再去运运运行它,诸葛亮大闹天宫就就没有问题了。每个名著都有他的角色列表和他的。试剂列表。角色列表,世纪列表,三国演义角色事迹。水浒传三角色世纪,然后呢,我把角色合在一起,西游记的角色和这个和这个红楼梦的角色。他们都用的是什么?用的是加法,这加法后边有什么呀?有这么一个反斜杠,这反斜杠是转义吗?其实不是,如果没有这手反斜杠的话,它就没法续成一行,所以这个反击杠在这儿是什么符号呢?是续航符LA continuation符号,那你说我不要这续航符行不行呢?可以啊,但是那你就没有续航符东西合在一行,合的一行你就得有横向滚动条,横向滚动条很长,就比较麻烦,所以这就是续航符的作用。
02:22
续航服的作用,避免横向滚动,太宽了。字符串是可以进行加法,那列表可以吗?观察一下第一个列表是12012,第二列列表呢是345,然后呢,1+2就得到什么呢?就得到了这个012345,再试一下,这回呢,我们试试这个字符列表,列表一是O1Z,列表二是O2Z,然后O1Z+OZ呢等于O1ZZ,但是这个空间加的这个瞬间是有这么一个空间的,但是这个空间在之后没有任何的变量名去接收它,它就。
03:01
消失了。我想把它留住是吧,留住怎么办呢?我作为例3,把这个值啊就给到LISTS3。O1不是列表一列表二这样吗?列表三这个东西和有,而且给他一个变量名是吧?给他个变量名它就存住了,存住了就不会消失了,就不会被垃圾回收了,那什么是垃圾回收呢?啊,像以前的语言啊,C语言它都是手动分配,手动释放内存啊,分配容易,但释放的时候忘了释放,就会导致什么呢?就会导致内存越用越多,泄露崩溃,那现在的拍子呀,Java呀,它都观察你这个内存空间,也就是这里面分配的地儿,哪个变量后边不用了,那就给你释放了。怎么看他不用了呢,我们上节课说这get reference没有地方引用它,就等于是没有变量指向它嘛,然后就垃圾回收了garage collection就是GC了,那把这个东西给它存付给LLT3了,它就存得住了。那我不不付给LT3,我想付给谁啊?我想付给LT1可以吗?
04:06
那么我们把这个东西改成什么呀?L t1,那这个没什么问题是吧。这是。例四一这个是什么?例42,然后呢,我们就是例42,还是原来的list的1呢,就等于这个和的状态了,那原来这个OEZ所对应那个空间又没人引用了,现在引用的谁啊?是例41加例42这个空间。那我能用增强赋值吗?增强赋值什么是增强赋值?增强赋值就是在赋值的基础上来一个增强,比如说来一个加加法。丽41加等于LISTS2,那它实际的效果是什么呀?那它实际的效果是什么呢?我们可以看到LIST1就怎么样,就在这个基础上就加出一个LIST2。加这个利萨,哎,你可以看到是在是在这一行里面加一个Li萨,刚才是在下一行里加一个利萨。这有什么区别吗?哎,效果肯定是完全一样,都是O1ZOZ这么一个合的状态,但是呢。
05:04
有细微的区别。比如说我们看这个O1Z没毛病,O2Z也没问题,这是它的空间对吧,最后这个一所在的内存的位置和最开始历一所在内存位置是相同的。是相同的。那么另一种情况呢?另一种情况是什么呀?就不是增强赋值了,是直接复值例LIST1加上例2。这是绿色一对吧。然后呢,这是例2。然LIST2地址,然后现在新的LIST1的地址和最开始的LIST1地址是不相同的,也就是说他新分出了一个地儿来,给谁呢?给这个1+2。他就跟最开始的例41的位置不相同了。从效果上是一样,但是呢,比如说从效率上就不太一样了,那现在是什么?现在你得先把历史一搁到这儿,来做一个副本吧。
06:03
再把例四二搁到这儿来,搁来之后再把这个东西给过来,这就怎么样,这就比较慢,那刚才这个呢,刚才这个增强赋值呢,增强赋值其实是例一本身就就有对吧,例S1本身就有的基础之上再加一个例二,直接就就扩列扩这儿了。相当于什么呢?相当于这么一个方法,哎,也就是例四一调用一个方法,什么方法呢?Extend.这个就相当于增强赋值的这个效果,那具体是什么效样子呢?我们可以看到例41在这儿,例42在这儿,然后再把它怎么样直接它的位置呢?还是原来的位置,还是原来的位置,也就是说这个extent俗称的扩列和增强赋值加等于其实效果是完全一样的。那这个extend是扩列,扩列怎么理解呢?我们去Python里去看一下,Help, 对谁喊救命啊?List的这个extend的方法,救命扩展列表白的appending。
07:11
From the interable就是从这个可变历的东西里面,嗯,把这一个一个的元素都往往这个列表里扩充进来,它这块有一个啊,Endding, 咱们以前也学过这个啊,Endding是吧?啊Endding什么意思来着,我们看一下这个这个效果哈,我们看数字列表一二三。给他怎么样,给他给他啊喷的一个四五啊,喷的一个四五,说的是3号元素是一个列表是四五。然后把这四五啊给它remove掉,Remove掉之后呢,在X extend的45。X45之后是什么呀?是把这个列表里边的东西扩列放这边来,哎,这两个是不一样的,一个是什么呢?一个是整个列表作为一个元素。放在最后一个。而extend呢,是把这个列表的每一个都搁到这列表里边,扩充这个列表,所以这两者是有这点区别的,列表相加的方式呢有两种,一种呢是新分配变号空间,把LIST1放进去,把LIST2也放进去,然后再把这个结果给LIST1,会改变LIST1所在的地址,并且时间上比较长啊,就是效率相对低一点。第二种方法呢,是进行扩列,扩列有三种方法啊,一种是增强赋值。
08:28
就是加等于第二种呢,是字符串的这个尾,把尾巴给拼过去,还有一种呢,是用X的方法扩列的方法,后三种呢,它呢不会新分配空间,就在原的例子1的基础上往后续,它的效率呢比较高。那既然列表有加法,列表能有乘法吗?我们下次再说。
我来说两句