返回顶部

python3 之 迭代器与生成器

迭代器

  迭代是Python最强大的功能之一,是访问集合元素的一种方式。
  迭代器是一个可以记住遍历的位置的对象。
  迭代器对象从集合的第一个元素开始访问,知道所有的元素被访问完结束。
  迭代器只能往前不会后退
  迭代器有两个基本的方法:iter() 和 next()

  1. 字符串、列表或元祖对象都可用于创建迭代器:
    1 list = [1,2,3,4]
    2 it = iter(list)     #创建迭代器对象
    3 print(next(it))     #输出迭代器的下一个元素  1
    4 print(next(it))     #2
    5 print(next(it))     #3
    6 print(next(it))     #4
  2. 迭代器对象可以使用常规for语句进行遍历:
    1 list = [1,2,3,4]
    2 it = iter(list)     #创建迭代器
    3 for x in it:
    4     print(x,end=' ')   #1 2 3 4
  3.  也可以使用next()函数:

     1 import sys
     2 
     3 list = [1,2,3,4]
     4 it = iter(list)     #创建迭代器对象
     5 
     6 while True:
     7     try:
     8         print(next(it),end=' ')
     9     except StopIteration:
    10         sys.exit()
    11 # 1 2 3 4

     

生成器

  在python中,使用了yield的函数被称为生成器(generator)。
  跟普通函数不同的是,生成器是一个返回迭代器的函数,只能用于迭代操作,更简单的理解:生成器就是迭代器。
  在调用生成器运行的过程中,每次遇到yield时,函数会暂停并保存当前所有的运行信息,返回yield的值,并在下一次执行next()方法时,从当前位置继续执行。
  调用一个生成器函数,返回的是一个迭代器对象。  

  1. 字符串、列表或元祖对象都可用于创建迭代器:
     1 import sys
     2 
     3 def fibonacci(n):       #生成器函数--斐波那契
     4     a,b,counter = 0,1,0
     5     while True:
     6         if (counter > n):
     7             return          #作用:如果计数大于n,则结束while循环
     8         yield a
     9         a,b = b,a+b
    10         counter += 1
    11 
    12 f = fibonacci(10)   #f 是一个迭代器,由生成器函数返回生成
    13 
    14 while True:
    15     try:
    16         print(next(f),end=' ')
    17     except StopIteration:
    18         sys.exit()
posted @ 2019-08-08 16:51  Be-myself  阅读(295)  评论(0编辑  收藏  举报
levels of contents 点击查看具体代码内容