• 7,迭代器和生成器


    列表生成式:

    [i for i in range(10)]这就就做列表生成式,等于[0,1,2,3,4,5,6,7,8,9]

    生成器:

    通过某种算法,我用得上一个列表中的元素,你给我生成一个,而不要我取创建一个完整的列表,这样保存算法的方式就叫做列表生成器

      创建生成器:

      将列表生成式的[]改成(),g = (i for i in range(10))这就叫做生成器,生成器不能像列表一样用下标调用

      next(g)

      0

      next(g)

      1

      通过next(g)这样一个一个的调用是非常麻烦的,一般我们都用for循环

      g = (i for i in range(10))

      for n in g:

          print(n)

      如果生成器比较复杂,用for搞不定,那就用函数搞定它 

      def han(max):

      n = 0; a=0;b=0;

      while n < max:

          yield b

          a,b = b,a+b

          n = n + 1

      h = han(10)

      这是我们就得到一个函数形式的迭代器,调用时用 h.__next__()来依次调用,程序运行到yield时,会跳出到外面来,直到遇到h.__next__() 或者是 h.send(self)时才继续运行下一步

    迭代器:

      可迭代对象:

      可以直接用for循环的对象,就叫做可迭代对象,包括 list tuple dic str set generator 

      判断是否是可迭代对象:isinstance()

      from collections import Iterable

      isinstance(这里放判断对象,Iterable)

      返回值为 True,Flase

      迭代器:

      可以被next()调用并不断返回下一个值的对象叫做迭代器

      from collections import Tterator

      isinstance(这里放判断对象,Iterator)

      返回值为 True,Flase

      generator是迭代器,但是 list dic tuple set str是可迭代对象,但是不是迭代器

      iter(可迭代对象) 这样就是迭代器

  • 相关阅读:
    迭代器概念与traits编程技法
    C++模板的特化与偏特化
    c++ operator关键字
    cookie-小总结吧
    ping
    git
    setTimeout()基础/setInterval()基础
    SASS
    命令行编译sass
    sublime添加sass编译
  • 原文地址:https://www.cnblogs.com/MaDon/p/9171432.html
Copyright © 2020-2023  润新知