迭代法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的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。