• python自动化开发5


    列表生成式 生成器 迭代器

    •   列表生成式

          举个例子

        列表[0, 1, 2, 3, 4, 5, 6],要求把列表里的每个值加1,如何实现呢?      

    
    
    1 L=[0, 1, 2, 3, 4, 5, 6]
    2 a={i+1 for i in L}
    3 print(a)
    View Code
    
    
    运行结果:{1, 2, 3, 4, 5, 6, 7}

    说明:以上例子的实现方法就叫做列表生成式。
    •   生成器
          生成器:
      如果列表中的元素可以按照某种算法推算出来,这样就不必创建完整的list,从而节省大量的空间。在Python中,把这种一边循环一边计算的机制,称为生成器:即generator。
           创建生成器的方法如下:
            方法1:把一个列表生成式的[]改成(),就创建了一个generator。
              例子:
              
    1 L =(i+1 for i in range(6))
    2 for i in L:
    3     print(i)
    View Code

    运行结果:1 2 3 4 5 6

        注意generator即生成器保存的是算法,每次调用next(g),就计算出g的下一个元素的值,直到计算到最后一个元素,没有更多的元素时,抛出StopIteration的错误。

        

           方法2使用yield创建生成器,即生成器函数。
          如果一个函数定义中包含yield关键字,那么这个函数就不再是一个普通函数,而是一个generator。
            例子:          
            
    1 def updown(n):
    2     for x in range(1, n): yield x
    3 for i in updown(10):
    4     print(i)
    View Code
    
    
    运行结果:1 2 3 4 5 6 7 8 9
    •   迭代器      迭代器是访问集合元素的一种方式。迭代器对象从集合的第一个元素开始访问,知道所有的元素被访问完结束。迭代器只能往前不会后退,不过这也没什么,因为人们很少在迭代途中往后退。通俗地讲,可以被next()函数调用并不断返回下一个值的对象称为迭代器:Iterator
            生成器都是Iterator对象,但listdictstr虽然是Iterable,却不是Iterator


      总结:

      凡是可作用于for循环的对象都是Iterable类型;

    
    

      凡是可作用于next()函数的对象都是Iterator类型,它们表示一个惰性计算的序列;

    
    

      集合数据类型如listdictstr等是Iterable但不是Iterator,不过可以通过iter()函数获得一个Iterator对象。

    
    

      Python语言的for循环本质上就是通过不断调用next()函数实现的。







     


          
          

      

        

  • 相关阅读:
    python 函数
    谷歌浏览器安装POSTMAN
    Django提示Unknown database处理方法
    Django 连接Mysql异常处理
    Django输入 中文参数保存异常解决方法
    vscode过滤pyc文件
    Jenkins启动和停止服务
    执行robot framework 的测试用例 命令行pybot使用方式
    Jenkins定时任务
    Jenkins构建Python项目失败
  • 原文地址:https://www.cnblogs.com/renyongbin/p/6418076.html
Copyright © 2020-2023  润新知