迭代器 生成器 python,迭代器和生成器的区别 python

  迭代器 生成器 python,迭代器和生成器的区别 python

  迭代器简介

  迭代器是重复值的工具。迭代是一种重复反馈过程的活动,其目的通常是为了接近期望的目标或结果。每次迭代过程称为“迭代”,每次迭代的结果就是下一次迭代的初始值。简单迭代不是迭代。

  迭代器是一个迭代值的工具。迭代是一个迭代的过程,每次都在重复。

  根据上一个结果,单纯的复读不是复读。

  whileTrue:

  Msg=输入(:)。strip (print) msg)。

  接下来的while循环是迭代过程,不仅满足迭代,而且将每次再次代入的索引值作为下一次循环的新索引值,重复进行,最后取列表中的所有值。

  goods=[mac ,联想,宏碁,戴尔,索尼]

  Index=0while index

  指数=1

  迭代器是一种迭代检索值的工具,与循环中检索多个值的类型有关。

  是:开放列表、字符串、元组、字典、集合和文件。

  l=[egon ,刘, dldcc]

  i=而我

  i=1

  上述重复值的方法仅适用于列表、字符串和元组的索引数据类型。

  为了解决基于索引迭代器的值检索的局限性

  Python必须提供独立于索引的访问方法。这是迭代器。

  1.1可重复对象

  通过索引进行迭代值选择实现起来很简单,但它只适用于字符串、列表和元组序列类型。对于非数组类型(比如没有索引的字典或集合),必须找到一个独立于索引的方法来获取迭代值。这用于迭代器。

  我们必须事先理解可重复对象的重要概念。从语法上讲,所有包含__iter__方法的对象都是可重复的,而字符串、列表、元组、字典、集合和打开的文件都是可重复的。

  { name : egon }。_ ITER _ { 7,8,9 }。_ ITER _。

  #1.可重复对象:然而,具有内置__iter__方法的对象被称为可重复对象# S1= # # S1。_ ITER _ () #

  #l=[]## l.__iter__ () #

  #t=(1,)

  #d={a:1}## d.__iter__

  #集合1={ 1,2,3 } # #集合1。_ _ ITER _ # #

  #withopen(a.txt),mode= w))as f:# # f . _ _ ITER _ _)# pass

  1.2迭代器范围

  调用obj.iter)方法返回的结果就是迭代器对象(iterator)。迭代器对象包括iterator和next方法,打开的文件本身就是迭代器对象。运行迭代器的。iter()方法将检索迭代器本身,同时运行迭代器的。next)方法将计算它的下一个值。迭代器以迭代的方式取值,与Python提供的统一索引无关。只要它的值中有多个“值”,不管是串行的还是非串行的,就跟迭代器一样。

  S={1,2,3} #可重复对象s

  I=ITER(s)本质上是一个迭代器对象I调用s.__iter__)并返回s

  next(I) #的本质是调用i.__next__()

  一个

  下一步(一)2

  下一步(一)3

  Next(I) #抛出StopIteration的异常,表示它是琐碎的,重复结束。

  #2,调用repeatable对象下的__iter__方法,将其转换为iterator对象。

  d={a:1, b:2, c:3}

  d _ iterator=d . _ _ ITER _ _()# print(d _ iterator)

  #print(d_iterator。__next_ ()) print) d_iterator。_ _ next _))print)print)d _ iterator。_)

  # while true:# try:# print(d _ iterator。_ _ next _ () ) #除了停止迭代:# break #

  #print((===))如果迭代器采用干净的值,则marry # d _ iterator=d . _ _ iterator _ _)(# while true:# try 360)prinnt)

  # l=[ 1,2,3,4,5 ] # l _ iterator=l._ ITER _ () #

  #为真时:#tr

  y:#print(l_iterator。_ _ next _ _())# except stop iteration:# break

  #3.可迭代对象和迭代器对象详解#3.1可迭代对象(可转换为迭代器的对象):内置_ _ iterator _ _ method对象#迭代对象。_ _ iterator _ _():获取迭代器对象。

  #3.2迭代器对象:具有__next__ method和_ _ iterator _ _ method #迭代器对象的对象。__next__():获取iterator # iterator对象的下一个值。_ _ iterator _ _():获取迭代器本身,和调不调一样。

  #dic_iterator=dic。__iter__()#print(dic_iterator就是dic_iterator。__iter__()。__iter__()。__iter__())#

  #4、迭代对象:字符串、列表、元组、字典、集合、文件对象#迭代器对象:文件对象#s1=#s1。__iter__()#

  #l=[]#l.__iter__()#

  #t=(1,)#t.__iter__()#

  #

  #d={a:1}#d.__iter__()#

  #set1={1,2,3}#set1。__iter__()#

  #

  #with open(a.txt ,mode= w )as f:# f . _ _ ITER _ _()# f . _ _ next _ _()

  双循环原理

  使用迭代器,我们可以独立于索引迭代值。while循环实现如下。

  goods=[mac ,联想,宏碁,戴尔,索尼]

  I=iterator (goods) #每次都需要重新获取一个迭代器对象。

  while true:try:print(next(I))except stop iteration:# catch exception终止循环。

  破裂

  For循环也叫迭代循环,in后面可以跟任何iterable对象。上面的while循环可以缩写为

  goods=[mac , lenovo , acer , dell , Sony ]for item in goods:print(item)

  for循环在工作时,会先调用iterator对象goods内置的iter方法得到一个iterator对象,然后调用iterator对象的next方法将得到的值赋给item,并执行循环体完成一次循环,如此反复,直到捕捉到StopIteration异常,迭代结束。

  for循环如何工作:for循环可以被称为迭代器循环。

  D={a:1, b:2, c:3}#1,d.__iter__()获取一个迭代器对象#2,迭代器对象。__next__()获取一个返回值,然后赋给k#3,重复步骤。

  #with open(a.txt ,mode=rt ,encoding= utf-8 )as f:# for line in f:# f . _ _ ITER _ _()# print(line)

  #list(hello) #原理与for循环相同。

  迭代器的优点和缺点

  基于索引的迭代值将所有迭代的状态保存在索引中,而基于迭代器的迭代方法不再需要索引,所有迭代的状态都保存在迭代器中。然而,这种方法的优点和缺点并存:

  3.1优势:

  1.它为顺序和非顺序类型提供了统一的迭代方法。

  2.惯性计算:迭代器对象代表一个数据流,需要时只能调用next计算一个值。就迭代器本身而言,同一时间内存中只有一个值,所以可以存储无限个数据流。对于其他容器类型,比如列表,所有元素都需要存储在内存中。由于内存大小的限制,可以存储的值的数量是有限的。

  3.2缺点:

  1.迭代器的长度除非用尽,否则无法获得。

  2.只能取一个值,不能回到起点。更像是‘一次性’的。迭代器产生后,唯一的目标就是重复执行下一个方法,直到值用完为止。否则,你会停留在某个位置,等待下一次对next的调用;如果要再次迭代同一个对象,只能再次调用iter方法创建一个新的iterator对象。如果有两个或更多的循环使用同一个迭代器,只有一个循环会得到值。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

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