Python中的for循环的进阶理解

2023-01-03 0 288

Python中的for循环的进阶理解

只不过,在词汇表述中,for 循环式的句法文件格式表述如下表所示:

for 插值表达式 in 可插值第一类:

标识符块

在那个句法文件格式中,插值表达式用作放置从可插值第一类中加载出的原素,因而通常不能在循环式中对插值表达式全自动表达式;标识符块指的是具备完全相同对齐文件格式的二百一十三标识符,又称作循环式体。

下面如是说的是for循环式的基本知识,里头提及了两个可插值第一类的基本概念。因而甚么是可插值第一类?单纯而言,在Python中,可插值第一类是同时实现了插值器协定的第一类,迭代器协定由方式iter()和next()共同组成。因而可插值第一类也是同时实现了iter()和next()三个接口表达式的第一类。当中Python里头表述了三个表达式iter(第一类)、next(第一类),是间接用以

for循环式组织工作基本原理是在最已经开始步入循环式体时,从可插值第一类中,初始化iter

Python中的for循环的进阶理解

从下面时序看见,假如是这种,因而不就成了进退两难式了,是不是选择退出那个循环式呢?Python提供更多的监督机制是StopIteration极度。透过插值器的next表达式在适度这时候,放出出高极度,for句子会捕捉该极度,进而同时实现循环式的面世操作方式。

因而流程图就变为了如下表所示:

Python中的for循环的进阶理解

讲了这么多的理论,给两个例子就比较好的而言明。

首先我们建立两个自己的可插值第一类,该插值第一类可以随机返回两个电话号码

Python中的for循环的进阶理解

import randomclass MyPhoneNumbers: def iter(self): self.vendors =[139,138,170,134] self.count =1 return self def next(self): if self.count <=8: phonenumber = self.generatephonenumber() self.count +=1 return phonenumber else: raise StopIteration def generatephonenumber(self): phone = str(int((random.random()+1)*10000000)) vendor = random.choice(self.vendors) return (vendor + phone)myphonenumbers = MyPhoneNumbers()for phonenumber in myphonenumbers: print(phonenumber)

这段标识符很好认知,透过random,自动生成两个号码后8位,透过随机选择两个运营商的号码段,随机共同组成了不同的电话号码。for循环式自己去初始化iter和next,每次循环式产生两个电话号码,并且打印出,直到产生了8个号码后,捕捉stopiteration极度,循环式选择退出。一切都如期望的运行。运行结果如下表所示:

Python中的for循环的进阶理解

认知了for循环式的基本原理,可以让你的标识符设计同时实现的这时候,更加简洁。

看见这里,总感觉for循环式有点不太舒服的地方。for的选择退出监督机制是依赖捕捉极度来做到的,这总感觉不是很漂亮,当然是不是优化,这是另外两个更高级的话题了。

相关文章

发表评论
暂无评论
官方客服团队

为您解决烦忧 - 24小时在线 专业服务