zoukankan      html  css  js  c++  java
  • 20180305-Python中迭代器和生成器

    一.迭代器

    迭代器是访问集合元素的一种方式。迭代器从访问到集合的第一个元素开始访问,直到所有元素被访问结束。而且迭代器只能往前访问,不能后退。另外迭代器的另一个优点,不会事先准备好访问的集合的所有元素。迭代器只有在迭代到某个元素后才会访问元素,而在这之前或之后,元素可以不存在或者销毁,这个特点是他特别适用于访问比较大或者无限的集合。

    特点:

      1.访问者不需要了解内部结构,仅需通过next()方法不断获取下一个内容

      2.不能随机访问集合中的某个元素值,只能从头到尾依次遍历

      3.访问到一半时不能回退

      4.便于遍历比较大的集合,节省内存

    >>> a = iter([1,2,3,4])
    >>> a
    <list_iterator object at 0x10467b3c8>
    >>> a.__next__()
    1
    >>> a.__next__()
    2
    >>> a.__next__()
    3
    >>> a.__next__()
    4
    >>> a.__next__()
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    StopIteration

    二.生成器

    一个函数调用时返回一个迭代器,那这个函数就叫做生成器(generator),如果函数中包含yield语法,那这个函数就变成了生成器

    >>> def func():
              yield 1
              yield 2
              yield 3
              yield 4
              yield 5        

    上述代码中,当执行func函数时会生成一个生成器

    >>> tmp = func()
    >>> tmp.__next__()
    1
    >>> tmp.__next__()
    2
    >>> tmp.__next__()
    3
    >>> tmp.__next__()
    4
    >>> tmp.__next__()
    5
    >>> tmp.__next__()
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    StopIteration

    项目实战

    利用生成器自定义range

    def zrange(num):
        start = -1
        while True:
            start += 1
            if start >= num:
                return
            else:
                yield start
  • 相关阅读:
    js点击按钮为元素随机字体颜色和背景色
    js随即数字random实现div点击更换背景色
    while循环计算1-100和,1-100内偶数/奇数/被整除的数的和
    慕课手机展示页案例
    第3题:求子数组的最大和
    第4题:在二叉树中找出和为某一值的所有路径
    第5题:查找最小的K个元素
    Linux系统开启IPv6任播(anycast)地址
    第7题:判断两个链表是否相交
    第8题上:思维题
  • 原文地址:https://www.cnblogs.com/it-q/p/8509835.html
Copyright © 2011-2022 走看看