迭代法python代码,python生成器和迭代器理解

  迭代法python代码,python生成器和迭代器理解

  

python教程栏目介绍编程用到的迭代器。

  相关免费学习推荐:python教程(视频)

  00-1010迭代器模式是一种经典的软件设计模式,现已内置于许多编程语言中。Python原来的数据类型中,能做for循环的都属于迭代类型。当然,也可以使用iter函数获取相应的迭代器,然后遍历对象。例如下面的代码:

  L=[1,3] #迭代对象__iter__t=iter(l) #获取迭代器对象print(t.__next__())

  print(t . _ _ next _ _())# print(t . _ _ next _ _())#报告异常复制代码要实现一个iterable对象,必须先实现对应的iterator对象。要在Python中实现迭代器,只需要实现__next__方法。但是,集合包中的迭代器类将__next__方法定义为抽象方法。我认为,鉴于程序的可读性,在实现迭代器时,继承迭代器类是可取的。

  从随机导入样本从集合导入可迭代的,迭代类天气迭代器(迭代器):

  def __init__(自身,城市):

  self.cities=城市

  self.index=0

  def getWeather(自身,城市):

  return (city,sample([sun , wind , yu],1)[0]) def __next__(self):

  if self . index==len(self . cities):提高StopIteration

  city=self . city[self . index]

  self.index=1

  Return self.getWeather(city)复制代码实现Iterable对象,它只需要实现__iter__方法。类似地,collections包中的ITERABLE类将__iter__方法定义为一个抽象类。

  从集合导入Iterable class weather Iterable(Iterable):

  def __init__(自身,城市):

  self.cities=城市

  self.index=0

  def __iter__(self):

  返回天气迭代器(self。city)复制代码,以便您可以使用for循环进行迭代。

  适用于极端天气([北京,上海,广州]):

  打印(天气)副本代码

如何实现可迭代对象和迭代器对象

。首先看下面的代码:

  定义生成():

  打印(“步骤1”)产生1

  打印(“步骤2”)产量2

  print(step 3) yield 3 copy代码上方的gen函数的返回值是一个生成器对象。

  g=gen()

  g.__下一个_ _()

  打印(g.__next__())

  Print(g.__next__())像上面的代码一样复制代码。每次调用生成器的__next__方法时,它都会执行一个gen函数,直到遇到yield关键字,并返回它后面的内容。所以,生成器可以理解为一个可以被中断的函数。

  注意:生成器对象也是一个可迭代对象。

  对于g:中的x

  Print(x)复制代码

生成器简介

实现__iter__方法作为生成器函数,可以实现iterable对象。

  素数类:

  def __init__(self,start,end):

  self.start=开始

  Self.end=enddef isprimenum (self,k) : #判断是否是素数

  如果k 2:返回假

  对于范围(2,k):中的I,如果k % i==0:则返回False

  返回True

  def __iter__(self):

  对于范围内的k(self . start,self . end 1): if self . isprimenum(k):产生驻科部队素数Numbers(2,100):

  Print(num) copy code

如何使用生成器函数实现可迭代对象

iter函数可以得到iterable对象的正向迭代器,reversed函数可以得到iterable对象的反向迭代器。

  在reversed(l):中,x的l=[1,2,3,4,5]

  Print(x)复制代码实现反向迭代,只需实现__reversed__方法即可。

  浮动等级:

  def __init__(self,start,end,step=0.1):

  self.start=开始

  self.end=结束

  self . step=step def _ _ ITER _ _(self):

  t=self.start而t=self.end:产生t

  t=self . step def _ _ reversed _ _(self):

  t=self.end而t=self.start: yield t

  t-=float range(1.0,4.0,0.5):中x的self.stepfor

  将x反过来打印(x)(float range(1.0,4.0,0.5)):

  Print(x)复制代码

如何进行反向迭代以及如何实现反向迭代

itertools包中的islice函数,切片iterable对象。

  从itertools导入islice(FloatRange(1.0,4.0,0.5),2,5):中的x的islice

  Print(x) Copy代码

如何对迭代器做切片操作

使用zip方法将相应的元素分组到一个元组中。

  对于zip([1,2,3,4],( a , b , c , d ,[5,6,7,8])中的w,e,m,

  print(w,e,m) copy代码使用itertools包中的chain函数串联多个迭代对象。

  使用zip方法,相应的元素被分组到一个元组中。

  从ITER tools import chain for x in chain([1,2,3,4],( a , b , c , d)):

  Print(x)复制代码以上是写给Python编程大师2:迭代器的详细内容。其他相关文章请多关注盛行的IT软件开发工作室!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: