zoukankan      html  css  js  c++  java
  • python3 之 迭代器与生成器 Be

    迭代器

      迭代是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()
  • 相关阅读:
    Max Sum Plus Plus HDU
    Monkey and Banana HDU
    Ignatius and the Princess IV HDU
    Extended Traffic LightOJ
    Tram POJ
    Common Subsequence HDU
    最大连续子序列 HDU
    Max Sum HDU
    畅通工程再续
    River Hopscotch POJ
  • 原文地址:https://www.cnblogs.com/gengyufei/p/11322198.html
Copyright © 2011-2022 走看看