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()
  • 相关阅读:
    putty的复制 技巧
    linux下的yum命令详解
    mysql修改密码
    我的阅读编程书籍的好方法
    WINDOWS下VIM配置
    Debian下VSFTPD配置
    一个远程访问MySQL的错误(2003, 10061)的解决
    auto_increment
    hello,world!
    scss文件中使用深度选择器/deep/报错 Expected selector Jim
  • 原文地址:https://www.cnblogs.com/gengyufei/p/11322198.html
Copyright © 2011-2022 走看看