当前位置: 首页 > 图灵资讯 > 行业资讯> 如何理解python中的迭代

如何理解python中的迭代

来源:图灵python
时间: 2025-03-14 17:54:25

迭代:通过重复执行的代码处理类似的数据集,迭代的处理数据依赖于上一个结果,最后一个结果是下一个结果的初始状态。如果中途有任何停顿,则不能被视为迭代。例如:

(1)非迭代例子

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

(2)迭代例子

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

例1只是循环三次输出" Hello world!",输出的数据不依赖于上次的数据,所以不是下降。

forr通常用于python ..遍历元组,列表,字典。还有for。 … in需要那个可迭代的对象。那python中的可迭代对象是什么呢?

在python中

(1)可迭代对象(iterable),指__________iter__内置方法的对象。

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

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

可以看出,迭代器必须是可迭代对象,而可迭代对象不一定是迭代器。

isinstancee可用于python(object,Iterable)判断对象是否为可迭代对象。使用isinstance。(object,Iterator)判断对象是否为迭代器。

In[1]:fromcollectionsimportIterable
In[2]:fromcollectionsimportIterator
In[3]:isinstance(1,Iterable)
Out[3]:False
In[4]:isinstance(1,Iterator)
Out[4]:False
In[5]:isinstance((1,2),Iterable)
Out[5]:True
In[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]:True
In[10]:

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

classFibonacci(object):
def__init__(self,all_num):
"""初始化属性"""
#将斐波那契数列的数量定义为实例属性
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.xrange()x中的xrange。

python培训视频众多,全部在python学习网,欢迎在线学习!