这篇文章主要介绍python中的迭代是什么,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

迭代:是通过重复执行的代码处理相似的数据集的过程,并且本次迭代的处理数据要依赖上一次的结果继续往下做,上一次产生的结果为下一次产生结果的初始状态,如果中途有任何停顿,都不能算是迭代。例如:

(1)非迭代例子

loop=0whileloop<3:print("Helloworld!")loop+=1

(2)迭代例子

loop=0whileloop<3:print(loop)loop+=1

例1仅是循环3次输出" Hello world!",输出的数据不依赖上一次的数据,因此不是跌代。

在python中通常用for …in遍历元组、列表、字典。而for … in后面需要那个可迭代对象。那么在python中什么是可迭代对象呢?

在python中

(1)可迭代对象(iterable),是指拥有了__iter__的内置方法的对象。

(2)迭代器(iterator) ,是指拥__iter__与__next__方法的对象。

在这里__iner__需要返回一个迭代器对象,__next__方法可以取出值,并停留到取值的位置,以便可取出下一个值。

在这里可以看出一个迭代器一定是一个可迭代对象,而一个可迭代对象不一定是迭代器。

在python中可以用isinstance(object,Iterable)判断对象是否为可迭代对象。用isinstance(object,Iterator)判断对象是否为迭代器。

In[1]:fromcollectionsimportIterableIn[2]:fromcollectionsimportIteratorIn[3]:isinstance(1,Iterable)Out[3]:FalseIn[4]:isinstance(1,Iterator)Out[4]:FalseIn[5]:isinstance((1,2),Iterable)Out[5]:TrueIn[6]:isinstance((1,2),Iterator)Out[6]:False

In[7]:classD():...:def__iter__(self):...:pass...:def__next__(self):...:pass...:In[8]:d=D()In[9]:isinstance(d,Iterator)Out[9]:TrueIn[10]:

python实现迭代:列如,用迭代实现斐波那契数列:

classFibonacci(object):def__init__(self,all_num):"""初始化类属性"""#定义一个实例属性,存放要实现斐波那契数列的个数self.all_num=all_num#定义count实例属性,作为迭代的退出条件判断self.count=0#实现斐波那契数列定义a=0,b=1self.a=0self.b=1def__iter__(self):"""在这里self所指3对象本身是一个迭代器,所以可以返回自身"""returnselfdef__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.bself.count+=1returnrectelse:#当迭代遇到StopIteration异常时便会停止迭代raiseStopIterationfibonacci=Fibonacci(10)forfibo_numinfibonacci:print(fibo_num)

迭代:通过存储一种生成方式,而不是生成结果,来实现数据存储。从而极大的节约了存储空间。

注意:

在python2.x中 range()函数后面存的是一个列表,xrange()存的是一个可迭代对象。而在python3.x中range()存的是一个迭代对象,相当于python2.x中的xrange()。

以上是python中的迭代是什么的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注亿速云行业资讯频道!