欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

python3 之 迭代器与生成器

程序员文章站 2023-04-04 20:11:00
迭代器 迭代是Python最强大的功能之一,是访问集合元素的一种方式。 迭代器是一个可以记住遍历的位置的对象。 迭代器对象从集合的第一个元素开始访问,知道所有的元素被访问完结束。 迭代器只能往前不会后退。 迭代器有两个基本的方法:iter() 和 next()。 也可以使用next()函数: 生成器 ......

迭代器

  迭代是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()