00:00
同学们大家好,欢迎大家来到Python编程语言系列课程,这节课呢,我们来讲解Python当中循环语句的第二种形式复印循环,那么在这节课当中呢,我们要去讲解复印循环的用法,以及如何使用for印循环来实现便利可迭代对象啊,那么通过这节课的学习呢,大家需要去掌握否音循环的使用,那么我们切换到教程来看一下。在上节课当中呢,我们讲解了Python当中的循环语句有while啊,那么while循环呢,和其他语言当中,呃外循环使用上几乎没有什么区别啊,除了我们Python特有的冒号之外是吧?啊,其他的没有什么区别,我们Python当中呢,不支持花括号的这种大写形式,代码块形式,那么其他语言使用大括号,那么在Python当中使用冒号来进行去区分我们的代码级别,那除此之外呢,几乎就没有什么区别了。
01:01
但是呢,Python当中它没有像C语言当中那种传统意义上的。这种for循环啊,比如我们通过代码来看一下,比如说啊,如果大家接触过其他语言,那么没接触过也没关系啊,那如果接触过其他语言的话,那么我们知道可能是这样写的in,它一个I=0,然后I小于,比如说10I再加,对吧?哎,它是这样写的一个循环,那这种循环形式呢,它可以来进行去记次对吧?哈,实现一种次数的循环,但在Python当中它没有这种啊,我们Python当中这种叫复印循环,复印循环呢,可以理解成是一种增强型for循环,那么我们可以通过复印循环来进行去专门处理谁呢?譬如字符串、元组、列表、字典等等,这些都是可迭代的,这种序列类型我们都可以使用封印循环直接使用它非常非常方便啊,那我们看一下否印语法循环的语法,那复印循环循环呢,它是for,然后加一个迭代变量。
02:06
然后in in呢,你可以理解成是一个成圆运算符对吧?哎,这个in什么意思,我们,诶后面跟上一个要变历的对象,然后是循环体,那这话什么意思呢?就是说当循环的时候,那么一旦解释器遇到了for循环啊,遇到了这个for,那么它就会从我们当前的可迭代对象当中去取出一个元素,然后放到我们这个代变量当中去啊,放到迭代变量中,那么在循环体当中就可以通过这个迭代变量来访问我们当前这个对象当中的元素啊,那么一次循环执行完毕之后呢,它会自动的去在这个可迭代对象当中去获取下一个数据啊下一个元素数据,然后呢,再放到变量当中进入循环体,然后再通过循环体控制这个变量进行处理,那么通过这种方式,我们可以很方便的啊进行去便利这种可迭代类型当中的每一个数据,然后对数据进行。
03:07
处理啊,那这就是我们否印循环的用法,从语法上来说它更加简洁,那从使用角度来说,它更加方便,那么它的最大作用其实就是来便利Python当中的这些可迭代对象,那哪些可迭代?刚才我们说了字符串、元组、列表、字典等等,这些都是可迭代的,那我们就来看一看,首先它来遍列字符串。遍历字符串的时候呢,首先呢,我们先定义了一个字符串啊叫hello,霍格沃兹,然后呢,我们for c in s对吧,For c in s,那么。在这里呢,它会就将S当中,就是霍格沃兹哈洛霍格沃兹当中这个字符串放到这里,然后在便历的时候,会依次将h helo,空格hogo啊,这些这些词啊,这些字符一个一个的拿出来放到C当中去,那我们在这里就可以使用啊,通过这个C来使用每一个字符,它直到什么呢?直到我们当前的这个字符取完为止,那么这个循环就结束了啊,那么我们通过这个来看一下,那在这里呢,我们进行去,呃,写一个啊呃,DM啊,这个写个什么呢?写个loop啊呃,写一个循环,直接写遍历吧啊,便利字符串啊,通过封印循环遍利字符串,那我们DEF写一个lo,然后下颌线写一个string啊,Look string.
04:34
好,那么首先呢,我们先定一个字符串,比如叫message啊,一个message我们等于一个就哈,然后后沃兹霍格沃兹啊好,那现在这个写完就来个叹号吧,写完了之后,然后下面呢,我们说for循环啊for循环那你也可以在这直接写for的时候,它会自动啊这块啊没有提示啊,新的这个版本当中,它不会提示那个格式了,那我们直接写for,然后呢,写个C,注意字符串它这个变量啊,这个迭代变量写什么都可以,那因为我们现在遍历是字符,所以我写了一个character啊,就是character它的这个首字母C,然后in in谁呢,印我们的这个message好,那这个时候我就可以直接打印这个C啊,打印这个C好,那么我们在这。
05:23
呃,不是print啊,写个map,写个程序的入口,然后调用一下loop string啊loop string,好,那么我们来看一下,这时候运行大家可以看到它会把每一个字符全都取出来,对吧?啊,每一个字符全都取出来,那么这个就是我们通过复印循环来遍历字符串,非常非常简单,好那么如果说啊,我们不用佛音循环,那其他的方式能不能变历呢?能,那其他的方式呢,我们这样来遍历啊,我给大家去演示一下,那对比一下,那其他的啊,语言当中可能使用for循环,也可以使用while循环,无所谓,那现在呢,我们这样写,我说写一个I啊,等于一个0啊,I=0,这是循环变量,然后呢,我们再写一个。
06:08
Lengths吧,S等于这个长度,我们扩取一下谁的mes的长度,然后我们说while啊,Well well,谁呢,I<Les啊,Les,然后我们在这取出来一个值,比如说取一个C=message,然后下划线I啊,取出这个值,然后我们把这个C打印出来,然后呢,再让这个I加等于等于1啊,加等于1。那这样的话,我们这个值啊就可以访问了,那我们来看一下运行。同样它也可以把这个数据打印出来,对吧?我们可以在这再加两个叹号,再运行一下,你看他把这三个叹号打出来了,你说它也可以进行去访问,但是呢,大家对比一下,你看这里边他要写多少行对吧?246行代码才能搞定对吧?那么我们这个两行代码就搞定了,简洁清晰明了,而你这个不光代码多,你还要去额外的定义两个变量,对吧?啊,这还有一个还有啊,这个两个变量就额外定义两个变量,那么在这呢,我们有一个C对应的,它抵消掉了,那是不是额外定义了两个对吧?啊所以说像这种呢,其他语言当中几乎啊都是这样来进行访问的,我们通过下标来取的,但是我们Python当中这种增强型否循环直接可以使用否印来进行去使用,那现在啊,大多数语言当中,大多数语言当中,那么也都增加了类似于这种否印的这种写法啊,这种写法来。
07:42
甚至便利,呃,它的容器类型啊。比如说有一种什么for意识循环,对吧,其实跟for in很像,好,那这是便历字符串,我们就写到这儿,那便历完字符串能干什么?我们这有一个示例啊,有个示例说编列完这个之后呢,我们把它的二次克码值打出来,就是它的对应的数值二进制编码啊打出来,那这要借助一个函数啊,一个系统内置函数就or RD,那我们来看一下,那这个其实把它打开,直接在这呢,我们去逗号,然后呢,再写一个字符串,这样诶我们在讲字符串的时候说过是吧,可以写多个参数,那我们在直接这写个or DC,那运行一下看看。
08:25
运行了之后,大家可以看到,你看在这里面是吧?诶A是97,这个比较特殊,我们看到只要他对了,那其他的都应该是对的,对吧?其他都应该是对的,那它会把它这个二次码的这个值啊,通过十进制的形式把它输出出来啊,每一个字符把它输入出来,好那这个呢,就是我们遍历字符串形式啊,遍历字符串形式,那遍历完了字符串当中的这个字符,你到底是要呢,拿它做什么处理无所谓,对吧?这个我们并不关心,它并不是复印循环当中的功能,我们复印循环的功能就是我们能把字符串中的每一个字符取出来啊好,那下面我们再来看一下。
09:07
除了遍历字符串之外,我们还可以进行确便历什么呢?便历元组啊,遍历元组,那元组我们也可以遍历,那在这儿遍历方式其实一模一样,跟字符串只不过就是它的数据类型原始类型变了对吧?那在这儿呢,我们输出一个示例,直接咱们就看一下这个示例如何实现输出了当前的这个每个数字的立方对吧?啊立方,那那这个值啊,立方这个值呢,就三个数相乘,但是在这呢,我们这个呃写的啊,它这个有问题啊,就是这个展示的时候有问题,少了一个星号,我们直接来运行一下那元组,我们D眼就便力元组便力。元组,那么DM呢,我们loop啊,Lo一个ta啊,Lo一个tale好便利元组,那循环便利元组的时候,我们首先定一个元组,比如说叫T吧,对吧?啊T等于等于谁呢?等于一个圆括号啊,然后12345好,那然后写完之后呢,我们four啊在这写个numbers吧,啊,Numbers好,然后呢,我们写一个呃N啊嗯,In in谁呢?In一个numbers我们说了。
10:17
循环当中这个迭代变量随便起名啊,但是我们命名的时候,变量命名的时候有一个规则叫建明之意对吧,那么我说字符的时候,我用了个C对吧?哎,那么我们现在是数字呢,所以我用了个N,当然你不起这个名也可以对吧,也可以,那现在写好了之后呢,我们可以直接打印一下,先来运行一下看看。那么我们在这呢,先去loop调用一下tale,那我们看先访问这个数据运行你会发现直接打印出来了,对吧?哎,非常非常的方便,那如果想打印它的立方值,那在这呢,我们同样用这个形式杠杠,然后在这打印一下,打印谁呢?打印一下N的,哎幂是吧,有个幂运算乘以3就可以了,对吧,就是三次方,好,那我们运行一下这儿可以看到那二的三次方,2×2乘二,三个2是不是应该是8对吧?啊333得九三九二十七四四十六再乘4,然后16×16是吧,64,那这样的话。
11:19
它就便利了我们当前的一个元组啊,非常非常方便,好,那同理它还能什么呢?在这儿我们回来看,除了便利元组之外,它还能便利列表,颁列列表,那列表跟原组有什么区别?其实没有任何区别,就是。这个便利的过程啊,其实就是圆括号变成了中括号,那在这里。我们就做了这样一件事,我把这个数据我们给他复制过来啊,他说这里面呢,保存了一个列表当中保存了谁呢?保存了我们当前HTTP请求的时候,它的一种外部请求的这种请求方式啊请求方式,那现在呢,我想把这个方式转换成大写显示,那我们来看一下,那在这里我们说便历便利列表。
12:03
啊,便利列表,那DF我们再写一个loop list.List它好,然后呢,在这我们进行去写一个把它粘过来啊,我们的请求方法一共有这么多,那现在显示的是小写,我们先把它遍利出来再说转化成大写这个事儿,那在这for,然后呢谁呢写一个M吧啊或者是一个method啊,Method,然后呢,In啊印一个request methods好,然后呢,我们打印一下这个method。同理,在这我们把它啊调用一下loop list,那当我们去打印的时候,大家可以看运行是吧?啊,我们把所有的这些请求方式依次的都取出来了,那取出来之后啊,取出来之后我说现在想把它变成大写的,那我们依然还是这样来做杠杠啊然后杠杠,然后呢一个箭头。一个箭头,然后呢,我们在这写上说这个method的,这就涉及到字符串函数的使用,我们之前讲过对吧,写一个upper就转换成大写啊,把这个method取出来,这个元素method转换成大写,那我们看运行。
13:10
这时候他们就都转换成大写形式进行确显示了,啊,那这是遍历列表,那除了列表之外,我们还有什么呢?还有便利字典啊便利字典,那字典呢,也是一种容器类型,那当我们去遍历字典的时候,字典因为比较特殊,它既有K又有值,还有建制,对对吧?啊,所以说呢,我们在这里使用的时候呢,它。便利的过程当中啊,需要去呃,进行去有几种便利方式,那首先呢,我们先来看一下这个啊,把这个数据拿过来,我们直接看一下字典,我们直接去讲了,那在这里呢,我们说便利字典。电力字典啊,电力字典好,然后呢,我们在这写上电力字典,它有几种方式DF,我们在这写上一个loop下限Di啊,然后呢,在这我们先把这个数据拿过来啊,然后呢,再调用一下我们当前的这个loop Di啊,Look好,然后呢,我们进行去便利它,把它最小化,然后呢,别的都收起来,我们把其他的代码都收起来。
14:22
好,收起来之后只留着字典这个,那么我们直接可以变列字典啊,我们直接可以变列字典,比如说在这儿for啊,然后呢,在这写个K啊K然后印,我先不说为什么是K,我们还是把这个拿过来,那么现在呢,在这写完了之后,我们直接打印一下,看看这个K它到底是什么啊,注意那首先看一下这个数据还是request methods,只不过呢,现在我们写了get,它对应的是什么呢?对应的是哎,它的功能就是用于获取服务器上的资源啊,通过URL传递参数,那post呢,用于向服务器提交数据,一般来创建新的需求的时候才会做这个,对吧?使用post方式,Put是用来更新资源的,一般修改的时候用这种方式,那delete呢,是用于删除的时候才用这种方式,好,我们有了这个增删改查这样四个方式,那放到这里面有请求方式,有对应的功能,那他们用键值对的形式来表示,这定义了这样一个四个元素的字典。好,那我们。
15:22
啊,进去遍历这个字典之后,那么看啊,这是默认电历方式,默认便历方式,这个肯定是能用的,那遍利的时候我们来看,诶运行你会发现他把他的K遍历出来了,对吧?哎,他把他的K遍历出来了,那但是这个时候我说光拿到K有啥用呢?你说我能不能拿到值呢?那能不能拿到值呢?其实可以啊,其实可以,那我们在这直接先去用一下,那你K都能拿到,还拿不到值吗?对吧,我们说request methods里面把这个K放进去,它这个值不就出来了吗?对吧?好,运行一下看看。
16:00
哎,那这时候K和值就都能拿出来对吧?哎,都能拿出来了啊,那这是第一种方式,注意啊,默认默认它进行去获取的时候取的是K啊,就是它只便利K,因为K是唯一不变的,好,那第二种方式,它有其他的很多种方法,我们在讲字典的时候说过是吧,直接获取,获取字典中等。K进行电力啊,进行电力好,那这个怎么便利呢?在这儿我们说for,然后还是K啊,这就理解,大家就能理解刚才我为啥在这写了个K,对吧?啊,因为它是K当中一个嘛,我们直接写了一个简写形式,然后呢,写个什么呢?In request methods点有个K,我们在讲字典的时候,是不是讲过这个方法,这个case是什么意思,就是获取当前这里面所有的。T值对吧,还所有字典当中所有的T值,那这个其实这个默认方式是一样的,我们再来看一下运行。对吧,哎,默认方式是一样的,那我把这句话给它拿过来放到这里来,诶运行对吧?哎,一样也可以精确获取它的键和值,那这是它的遍历K的这种方式,但是单纯上我们去,嗯,遍历字典的K没有什么意义,对吧?哎,都要通过K来获取它的值,那有人说老师我能不能直接获取值呢?也可以啊,那因为我们想起来还有一个方法,对吧,这是获取字典中的啊字,字典中的所有值啊,所有值进行电历,好,那在这呢,我们写成一个for,然后写个V啊为啥写v value嘛,对吧?哎,然后in in request.
17:44
methods.values对吧?啊values好,然后呢,我们可以去打印一下。大家谁呢,直接打印V,那注意,因为这会我们直接取的只有所有值,它就不存在K了,那么这时候我们直接打V就可以就把这个值取出来了,那这个时候你要再想拿K来做点什么事的时候,对不起,做不了了,那就做不了了,但是现在啊,其实更多的情况下,你获取K的这种方式呢,还是有点用,因为通过K我们能获取到值,如果你直接拿值的话,便利其实意义不太大啊,意义不太大,因为直接拿这个值的话,那么我们并不知道这个值对应的是哪一个K,所以说这两种情况都不太常用,为什么不太常用,单纯获取值他找不到K,不知道怎么匹配,你单纯获取K的话,那其实这种方式呢,嗯,还麻烦啊,还麻烦,为什么麻烦呢?因为它还有另外一种方式啊,还有另外一种方式,注意看啊,在这我是这样写。
18:45
欧洲获取啊,字典中,字典中所有的建制队啊建制队。那还有个什么方法呢?大家还记得吗?叫for,然后写一个it,然后in,我写到这应该大家都知道了,Request method.it对吧?哎,那我们先打出来看看这个item是啥?当打这个item的时候,我们运行大家可以看到它是以元组的形式。
19:11
进行去做了一个获取是吧?哎,K和值放到一个原组当中,K和值放在原组当中,那么这是我们进行去便利字典的最常用的一种方式啊,因为有的时候我们的便历字典的时候需要用到它的key,还需要对直径行去做处理,所以说这个时候我们经常使用items这种方式来进行遍历,而且这种便利方式的时候,我们把它注释掉啊,复制一份,然后注释掉粘贴一下这种方式,如果说诶,那你这要是获取K的话,这个怎么用呢?那我们现在是不是得it点0对吧?啊,因为它是元组吗?它有下标,那么再写个item点一是这样的话就把K和值全都取出来了,对吧?还能取来,但是没有必要这么麻烦,为什么呢?因为Python当中还有一种语法叫做解包啊,解包什么叫解包呢?就是现在我可以让K,然后V,然后等于item item当中,刚才我们不说它有两个值嘛,一个原子当中两个值,那将两个值赋。
20:11
给两个变量,那它就会按照顺序依次的把这个元素值赋给这个变量,那么既然是这样的话,我们可以在这里面直接把it变成K和V,好,那这时候这样的话,那么我们直接在这打印K逗号,然后在这再写一个,哎,这样然后再写个V啊,那大家看一下运行。这个时候生物就把K和V全都取出来了,而且可以在循环当中直接通过这两个变量来进行去访问,对吧?那这样的话,我们在便利字典的时候就非常方便了,便利字典的时候就非常非常方便了,好,那么。我们看啊,直接在这便利字典的时候,这种方式呢,呃,直接对字典进行遍历啊,大多数情况下是没有意义的,因为它获取的是我们当前的一个T啊,所以说没有什么太大的意义,那一般的情况下呢,我们都是通过这种item这种形式啊,来进行去便利是吧,通过这种item形式来进行去便利它,那甚至我们可以来进行去做这种KV的这种操作是吧,KV的操作好,那关于我们通过复印循环来进行去便利我们可迭代类型呢。
21:21
就讲到这里啊,我们就讲完了,那么通过这节课的学习,大家去掌握复印循环如何使用它的流程结构啊,它在使用的时候,它的执行顺序,执行流程是什么样,它会去便利我们的可迭代对象,把里面元素当中呢啊,把里面的每一个元素数据取出来,放到可迭代变量当中去啊,然后呢。在循环体当中就可以去使用这个变量,那么我们通过复印循环可以处理可迭代对象,这可迭代对象包括字符串、元组、列表、字典,对吧?那字典呢,还可以便利它的key,便利它的值,便利它的item,甚至item还能做解包操作,直接获取它的键值,对,对吧?啊,键值对,好,那这个就是我们通过否印循环啊,来进行去便利数据的这样的一个过程。那关于否印循环,我们这节课就讲到这里,我们下节课再见。
我来说两句