python中的迭代法,Python迭代的意思

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

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