python中的迭代法,Python迭代的意思
迭代:是通过反复执行的代码对相似数据集进行处理的过程,这次迭代处理的数据依赖于上一次的结果,是下一次的初始状态。如果中间有停顿,就不能算是迭代了。例如:
(1)非迭代示例
循环=0
whileloop3:
print(Helloworld!)
循环=1(2)次迭代的示例
循环=0
whileloop3:
打印(循环)
Loop=1示例1只是“Hello world!”的输出3个周期后。输出数据不依赖于前面的数据,所以不是替代品。
在python中,for …in常用于遍历元组、列表和字典。在for … in之后需要那个iterable对象。那么python中什么是iterable对象呢?
在python中
(1)可迭代对象(iterable)是指内置了_ _ iterator _ _方法的对象。
(2)迭代器是指带有_ _ iterator _ _和__next__方法的对象。
这里__iner__需要返回一个迭代器对象,__next__方法可以取值并停留在取值的位置,这样就可以取下一个值。
这里可以看出,迭代器一定是迭代器,而迭代器不一定是迭代器。
在python中,可以使用isinstance(object,Iterable)来确定一个对象是否是可迭代对象。使用isinstance(object,Iterator)确定对象是否为迭代器。
in[1]: fromcollectionsimportable
in[2]: fromcollectionimportiterator
In[3]:isinstance(1,Iterable)
[3]:假
In[4]:isinstance(1,迭代器)
[4]:假
In[5]:isinstance((1,2),Iterable)
out[5]:真实
In[6]:isinstance((1,2),迭代器)
out[6]: false in[7]: class d()
.def__iter__(self):
.通行证
.def__next__(self):
.通行证
.
In[8]:d=D()
In[9]:isinstance(d,迭代器)
out[9]:真实
在[10]:中python实现了迭代:比如斐波那契数列就是通过迭代实现的:
classFibonacci(对象):
def__init__(self,all_num):
初始化类属性
n
bsp;#定义一个实例属性,存放要实现斐波那契数列的个数
self.all_num=all_num
#定义count实例属性,作为迭代的退出条件判断
self.count=0
#实现斐波那契数列定义a=0,b=1
self.a=0
self.b=1
def__iter__(self):
"""在这里self所指3对象本身是一个
迭代器,所以可以返回自身
"""
returnself
def__next__(self):
"""
next,实现迭代返回结果
"""
#判断输出的数列个数,是否小于需要的数列个数
ifself.count<self.all_num:
#rect最终要输出的斐波那契数列
rect=self.a
#在这里重复让a=b,b=a+b,来实现斐波那契数列
self.a,self.b=self.b,self.a+self.b
self.count+=1
returnrect
else:
#当迭代遇到StopIteration异常时便会停止迭代
raiseStopIteration
fibonacci=Fibonacci(10)
forfibo_numinfibonacci:
print(fibo_num)迭代:通过存储一种生成方式,而不是生成结果,来实现数据存储。从而极大的节约了存储空间。
注意:
在python2.x中 range()函数后面存的是一个列表,xrange()存的是一个可迭代对象。而在python3.x中range()存的是一个迭代对象,相当于python2.x中的xrange()。
众多python培训视频,尽在盛行IT软件开发工作室,欢迎在线学习!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。