00:00
那接下来的就是这个字符串,字符串这一块可能需要给大家稍微多讲一点,但是我们时间可能不够啊,所以就是给大家还是过一遍就完了。字符串这边为什么重要呢?因为大家看到它其实跟列表是一样的,因为大家知道字符串是不是可以认为就是一个字符数组啊,对吧?在我们其他的一些语言里面都是这么定义的,所以在Python里面大家可也可以类似的认为它跟list是很相近的。那怎么样去截取一个字符串呢?比如说这里有一个hello word对吧?这个string等于hello,那么大家会想到它是不是相当于是一个数组啊,那这个数组从几开始呢?大家看到是不是从零开始对吧?所以我直接取这个string中括号零是不是取出来就是H这个字符啊,那这跟我们其实在别的这个语言里面是差不多的啊,那如果我想取最后一个字符怎么取呢?首先那个第一个字符,那就是一个一个挨过来了,对不对?这都一样啊,最后一个字符怎么取呢?哦,大家可能想到我需要LS。
01:14
这样去取对不对,这是它的整个的长度,你从零开始的话,我是不是还得去减一啊,对吧?那大家可以看到这是一个D,对吧?我们这里边有一个非常简单的写法,直接负一对,所以大家可以看到就是Python里边相当于有很多的语法糖,对不对?对吧?你这个就是负一,就其实就相当于是length string减一,那同样大家可以想到我是不是还可以负二啊,负二是不是倒数第二个啊,对吧?正着数你从零开始,倒着数从负一开始啊,这就是我们这里给大家列出来的,你这样ABCDEF6个字符怎么排,你用索引用哪个都可以,对吧,正着负着都可以,那这里边还有除了这个索引之外,还有一个重要的字符串的内容是什么呢?它可以去做切片,什么叫切片呢?这个如果大家呃,之前学过JS的话,可能对这个就不太陌生,如果要是没学过的话,可能相对会。
02:14
稍微麻烦一点,比方说我这里可以这么写,零到五,这表示什么意思?大家看一下零到五它是什么呢?从零开始取,取到五截止,注意是不包括STRING5那个元素的,给大家数一下012345 string5是不是应该是空格啊,对吧?所以大家注意啊,这个截取的时候是相当于这个应该叫什么?左闭右开对吧?对,就是前面是闭区间,后面是开区间,所以它代表的是从零取取到五,不是取五个元素啊,因为我们还可以怎么取呢?我们还可以一到五,一到五应该是什么。
03:05
大家看是不是取出来是四个元素啊,对,从string一开始取包括一对吧,取到STRING5不包括五是这样的一个意思啊,所以这是这样的一个写法啊,当然有同学说,那你既然是这个前面我们索引的时候可以正可以负,我这里边是不是也可以正可以负啊,啊当然也是可以的,比方说我这里可以从负六开始去索引到负一,那大家会看到是不是就是反着来的呀,对吧,那我负六是不是得包括负一是不是不包括啊对,所以大家看到最后输出的,诶,相当于我们这里边最后一个就没有了。那大家可能想到,我要是想从负六一直输一直输,输到头呢,我想把最后一个也也包含进来呢。你可以直接这么说,后面负一不写就完事。
04:05
所以大家就会想到,那我如果要是说想要从头开始截止到第六个为止,怎么写呢?是不是可以这样写啊,对吧,前面的零是可以省略的对不对,就包括这里的负一可以省略一样,那同样大家就可以想到string冒号,冒号是不是就相当于是完整的string啊,对,这就是它里边的一些这个所谓的切片的这样的一个写法,这里再多给大家注意一下,就是这个切片的写法,后边还可以有第三个参数,第三个参数是什么呢?这个是切片便利的一个,不长大家会看啊,我如果是给一的话,就是e lo对吧,如果我给二的话,呃,这这个可能不太明显,我这里就直接把所有的都拿出来吧,对吧。零对吧?呃,大家看这是不是全部全输出了,所以后边默认就是一对不对,给二的话,大家看是一个什么东西,给二它取的是hld,是不是隔一个取一个呀,对,所以这是它取的做切片的一个布长,那如果是三的话,那是不是就变成了ah,然后隔两个取一个对吧?步长是三,隔两个取一个是不是W再隔两个取一个L对吧?所以大家看一下,这就是这个Python里边切片的这样的一个方式。
05:39
呃,那在这个字符串里边,字符串有这样的一个特点,那Python里边我们如果要是呃定义一个list啊,大家看一个它的这个数,大家认为的数组对不对,Python里面叫列表list可以怎么定义,我可以一三十四,哎这么多对吧,它可以有不同的类型,比方说我这里可以给一串字符串对吧?呃,我我可以还可以给一个处,大家可以看到A丽丝的打印一下,它就是这样的一个。
06:15
就是这样的一个列表,那这个列表我们是不是也可以按照上面的这个方式去取呢?比方说我取它的负一,诶大家看处对吧,负一的值是不是处啊对吧?或者我可以取正着数的话,0123,第三个,这是不是这个字符串啊,或者我也可以去从第一个开始取到第三个,大家会看到是不是包括第一,包括一不包括三对吧,是不是取出来是三四两个,呃,就是一二两个啊对,所以它返回的是一个新的列表对不对?那对应到我们字符串,它就返回的还是一个字符串对不对?所以这是完全类似的啊,就是列表可以去做这样的一个切片处理,也可以做这样的,所以跟字符串的处理相当于是完全一样。
07:07
大家可以去这个多试一试啊,既然提到这儿,后面我们运算符可能就不详细去给大家讲了,我这里边可能就给大家,呃,先把这个list这里再多讲一点啊,比方说我在定义一个b list,大家看它这个list能灵活到什么程度,它里边的元素我们不是给什么类型都可以吗?对吧?那大家可能会想到就是对我是不是还可以给一个例子的呀,没错,我可以直接这么给,那这个B例是个什么东西呢?大家看就是这样的。所以大家看Python的这个数据结构,是不是很容易的就能弄出来列表的列表是不是就有点像二维,二维数组就变成矩阵了呀,对,所以大家发现这个非常容易就能做出这样的一个数据结构来,而且里边的这个元素它还不挑,你给什么都可以用,所以这就是它很很方便的一点啊,那当然这个b list,你如果要想取它的这里边的某一个值怎么取呢?就是它里边的这某一个,那首先是不是0123,你先取到它的三对不对,这个比例的三是这个数字,这个列表对不对,那是不是我如果要取这个的话,再取一个三,是不是拿出来就是这个值啊,那是其实就是二维数组的一个取法对不对啊,所以大家可以看到,当然你里边也可以做,呃,切片对吧,前面我们讲过的所有的都是可以这样做的。
08:33
然后再给大家讲一下,就是这个。说呃,这个列表可以做一些操作,比方说list a list,呃,我可以加上比list来想想这是一个什么操作,什么骚操作啊,大家看一下这个结果就知道了对吧?对,哎,这个就太简单了对吧,就直接一个加号两个拼在一起了啊,当然大家可能会想到,那我是不是A加B和B加A就应该不一样啊,没错,顺序不一样,它就是按照前面的B,所以我放在这,A全部接在后边对不对啊,它还有什么骚操作呢?A list,我们先看一下a list是什么东西啊,我可以a list乘以二,大家看一下,直接就相当于是A加A对不对,对吧?所以大家其实可以直观想到的啊,就直接就可以做这样的操作,所以这个简直就太方便了啊,对于。
09:37
这个数组操作来讲,呃呃,那当然有同学可能就想到我,我前面那个还有stream,对呃,对吧,那我再来一个be stream,如果它等于我随便挑一串的话,那我a string,呃,没有a string啊,就是叫string是不是也可以做类似的这个加法啊,加一下试试,大家看是不是就是直接拼在一起了,同样我的这个string是不是也可以乘以一个数啊,诶就变成三次hello word了,对吧?所以大家直观的就把这一个字符串看成一个list就可以了,List是呃在我们这个Python里边非常重要的一个数据类型,所以可以给大家多说两句,然后大家下来之后可以多试一试啊,它里边有一些玩法可以大家多看一看,呃,然后这里边这个字符串获取,呃,还有就是有一个这个反,呃反斜杠做转移啊,这个大家很熟悉对不对,对吧,反斜杠杠N这个就是呃加加这个。
10:37
呃,我们回车,然后你还可以杠R呀,还可以加一些其他的一些东西,这些我们就不去讲了,那list的这一部分也相当于给大家讲完了,对吧?然后还有一部分重要的这个数据类型叫做temple,就是元组,对元祖这个东西它有什么特点呢?元组这个特点有一个特点是不能修改,那大家可以看到我前边的这个string啊,呃,当然了,字符串也不能修改对不对?大家可以想到字符串,我们说是它可以看作是一个list,但是假如说我们要把这个比方说我改一个啊,Hello word,第一个H想改成S,能改吗?他直接就报错了对不对,他说这个object does not support,这个这个assignment,对吧,不能去去给他做赋值,那么大家会想到我的这个a list可以去做这个更改吗?
11:36
诶,大家看这个就可以对吧,那a list改了之后,是不是第一个元素就变成S了,所以大家注意啊,就是string是不能做更改的,但是list可以做更改。呃,那这他尽管其他的操作很像,但这个是不一样的,那他就是我们的这个元组呢,他其实也是。就是很很很很简单的一个类型吧,它定义的时候直接拿一个括号就可以了,那定义的时候怎么定定义呢?大家会看到是不是跟list的定义差不多啊对吧?我直接这么一定义完了之后放这就完了,那我取的时候怎么取呢?呃,大家会想到是不是还是类似的一个取法啊对吧,加一个索引是不是就可以取了,诶那一二对吧,同样是不是也可以有负一啊呃,同样大家会想到是不是可以有这个可以有切片啊,所有的东西都一样都能做,那不一样的是什么呢?你想干这种操作的时候,他就报错了,对吧?所以它跟list大家可以认为就是就是最大的区别就在于不能更改,这个跟这个字符串string有点类似,但是string呢,它是直很直白的,就是字符串对吧,我们这个元组。
12:58
它的类型可以是各种类型,这个又跟list一样灵活,呃,所以大家会发现list其实是一个核心,对不对,其他的东西跟他都都长得很像,呃,那这是这一部分内容啊,当然了,就是这里说了就是元组也可以用加号和心,那么大家会发现这个完全一样对不对,那如果你要想去弄一个这个空元组的话,直接一个括号就可以,这就是一个空元组啊,当然如果是一个空粒子的话,直接一个空的中括号就可以,对不对,对吧?所以大家这个就是了解就可以了啊set这里给大家注意一下set。
13:38
这个可能时间还是给大家拖几分钟可以吗?大家急着下课吗?呃,我们就把这几个set和字典都讲完,大家就下课,下去之后大家可以自己照着文档试了,对吧?好,那么set这里边的元素它怎么去定义呢?大家会发现它的定义其实跟我们前边的这些东西是完全一样的,对吧?那比方甚至我这里可以给一个A。
14:04
那么我们看一下这个a set到底是什么东西啊,哦,A我给的是五是吧?啊,没有没有一个复杂类型,所以大家看到它其实就是拿大括号定义出来的一组。一一组元素对不对,这个元素也是什么类型都行,随便往里塞,呃,那那这个他又能有这个什么样的特点呢?那当然了,就是set,它肯定有自己的一些,呃,同样有一些自己特别的骚操作,对不对?呃,那么大家可以看到,就是说我们可以去定义这样的一个set,比方说这里大家看可以给这样的一个操作啊,我我我这里来定义一下,就是直接用set关键字,这表示什么呢?大家看构建的一个set是什么呢?把这样的一个字符串。里边对去虫所有的元素拿出来构成一个集合。啊,那这个是不是就非常好用啊,在有一些场合非常好用,对吧?我们把这个B也做一个这个操作,然后B我们看一下也是去重之后的内容对不对,然后我们还可以做一个什么,就可以做什么操作呢?诶是不是插并补这些就全可以做了,对吧?啊叉叉叉交并啊,就比方说那大家可以想到我们之前不是有加吗?这里能加吗?Set不能加,呃,这里要稍微注意一下啊,Set比较比较尴尬,就是这个尽管它可以减,但是它不能加,但是它可以减,减表示什么呢?
15:35
简表是A里存在的,但是没有在B里存在的。就是A减B对不对,同样我们是不是可以B减A啊,B减A是B里存在的,但是没有在A里存在存在的对吧?啊,这个就大家自己去去尝试一下做这些操作啊,然后那么大家会看到就是还有一些就是比方说这个操作这是做什么呢?这是不是相当于加啊,B或A是不是取并集啊对吧,这相当于加,那当然对应的是不是还可以有这个逻辑运算符可以取交集啊A。
16:15
与A,呃,B与A,这就是他俩取交集啊,那当然了,就是我们还可以去,呃,这里有一个特殊的符号啊,上间号,这个是取什么呢?取的是对,就是没有在A和B中同时出现的元素,所以它其实相当于什么呀。这个相当于什么呀。它其实就相当于A减B在B上,B减A对不对?大家想一下啊,其实就是这样的一个过程对不对啊,当然这个顺序可能稍微有一点不同,大家看R在前面对吧,D在这里,B在这里对吧?是一样的元素对不对?对集合没有顺序啊,所以这个给大家简单的过一遍,然后字典这里要注意一下,就是字典的生成的时候。
17:10
也是用大括号的,所以如果我们想要去生成一个空集合的时候,注意不能直接空大括号,因为空大括号默认是一个空字点,那空集合怎么样创建呢?Set括号不带东西,这就是空集合啊,这个大家稍微注意一下,呃,然后这个字典其实大家就看到了,这个字典怎么创建,其实就是一个key,一个value对不对,这个大家这个map很熟了啊,这个我们就不详细讲了,那假如说我这里边当然也可以大家看用这个呃,Di Di这个关键字去做这样的一个处理,对不对,你把这个里边的这个作为元组,作为元素传进去,也是可以创建字典的。而且大家看还可以有什么样的骚操作呢。就是可以比方说X,然后冒号X星星二,这表示什么平方对吧?对平方,然后four X in2,四六。
18:12
诶,大家可能对这个感兴趣啊,大家说这代表一个什么东西啊,大家看一眼,这代表这是一个字点对吧,前面是X对不对,后边是X的平方,每个元素K是X值,是X平方,那么X怎么取呢?取246这个元素中的每一个元素,对吧?For X in这里,所以大家看这个类似于这个自然语法的这个表达啊,就确实很很骚气对不对啊,所以就是大家如果感兴趣的话,可以把这些特殊的这种写法都都去尝试一下啊,都去写一写,呃,那当然就是说如果我们想要去取这个一个字典里边元素的时候,我们怎么去取呢?比方说这的这个D对吧,D里边我们想要去取它里边的一个元素,怎么去取呢?
19:10
你是取接力方啊,大家看一下我们是不是要用它的K去取啊,对,所以那么我们这里边假如说取第一个元素,它K是什么,K就是二对不对,对吧?所以大家看我们要取的时候,直接就是KD2这样去取的啊,所以这个就是大家不要,哎呀这这写错了啊。大家不要跟我们前边的这个数组的那个索引去去搞混,对不对,这里边传进去的是他的K。呃,如果说我们写成这样的这个字符的字符串的这个形式,大家可能更好理解一些,对不对,如果它的K要是一个数值的话,这个大家更要注意一下啊,这是给大家强调的一点啊好,那么呃,基本上就是这些了,当然这里边还有一个就是大家可以有这个K对不对?呃,这个D的key,所有的key对吧?那同样是不是还有values啊啊,同时取出它所有的key和所有的value,那这个在Java里面是不是也有类似的这种呃操作对吧?啊,对于map什么的大家都有这个,呃,对对,这个类似的一些操作我们就不全,就不去详细讲了啊呃,然后后面这些我们就不详细展开了,包括条件和循环,那么大家就就稍微注意一下它的语法就可以了,对不对?呃,那最后这个函数这一部分,大家可能稍微注意一下这个函数怎么去写,那DeFine之后也要有冒号对吧,那注意。
20:39
这里这样定义完了,这个函数就定义完成了,对不对?注意缩进对吧?缩进如果跟上面对齐,这就是调用了啊,调用的时候直接AAX等于五就完了,那么这里边注意就是说假如有参数的话,就是有几个参数传入几个参数,这是最常用的方式对不对?那还有一些不太常用的方式,就是你如果要诶有这个调用中有输入参数的时候,你需要这个参数名完全对应啊,这是一种方式,还有一个什么呢?如果要是说你的顺序不一样的话,你要把它的那个参数名带上,诶大家注意啊,可以这么去附,所以就是这个付进去之后还是X是五,Y是二,对吧,不是按照顺序去付的,而是按照变量名去付的,另外还可以怎么样呢?还可以有默认值啊,大家看定义的时候,直接就给了一个值,这是不是你可以传,可以不传,不传我就拿30对不对啊,这这是一些常规的一些做法啊。
21:40
当然还可以有不定常参数,你大家看这个星号的这个这个这个表达对不对,你中间就可以有各种各样的这个变量放在这里,那前面的这个XY,那对应的是前面的两个值,后边的是不是就可以传传不同的东西啊啊,所以大家可以简单的过一下这些东西是是怎么做的啊,然后还有返回值,返回的时候可以返回多个值啊,这个大家也也比较熟悉了,对吧,Skyla也是允许返回多个值的,所以呃,这其实就是这些。另外还有一个东西是匿名函数,匿名函数那就是拉姆达表达式了,这个跟Java吧里边的这个,呃,匿频函数也是类似的,大家感兴趣可以看,我们可能用到的会比较少一点,所以这一部分就是很快速的给大家过了一遍啊呃,大家接下来可能就是已经有了这个环境,那大家就照着感兴趣的代码都敲一敲对不对,关键是在list的这一块,它的一些操作。
22:40
我们之后可能频繁的会用到,呃,就是还有就基本语法大家不要搞错啊,就是一写就出语法错,这个调程序比较麻烦。
我来说两句