• python生成器及迭代器


    一.迭代器

    迭代器是访问集合元素的一种方式

    迭代器是一个可以记住遍历的位置的对象。

    迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束。迭代器只能往前不会后退。

    迭代器有两个基本的方法:iter() 和 next()

    字符串,列表或元组对象都可用于创建迭代器

    特点:

    1. 访问者不需要关心迭代器内部的结构,仅需通过next()方法不断去取下一个内容
    2. 不能随机访问集合中的某个值 ,只能从头到尾依次访问
    3. 访问到一半时不能往回退
    4. 便于循环比较大的数据集合,节省内存  
    >>> li = [1,2,3]
    >>> it = iter(li)
    >>> print(next(it))
    1
    >>> print(next(it))
    2
    >>> print(next(it))
    3

      迭代器可以使用for循环进行遍历

    >>> li = [1,2,3]
    >>> it = iter(li)
    >>> for i in it:
    ...     print(i)
    ...
    1
    2
    3

    二.生成器

      一个函数调用时返回一个迭代器,那这个函数就叫做生成器(generator)

      如果函数中包含yield语法,那这个函数就会变成生成器

      生成器运作:

        当达到一个真正的返回或者函数结束没有更多值返回(当调用next()),一个StopIteration异常就会抛出

    def func():
        yield 1
        yield 2
        yield 3
        yield 4
    >>> temp = func()
    >>> temp.__next__()
    1
    >>> temp.__next__()
    2
    >>> temp.__next__()
    3
    >>> temp.__next__()
    4
    >>> temp.__next__()
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    StopIteration
    def frang(n):
        start = 0
        while start < n:
            yield start
            start += 1
    
    valu = frang(5)
    n1 = valu.__next__()
    n2 = valu.__next__()
    print(n1,n2)

     

  • 相关阅读:
    Javascript多线程引擎(一)
    Windows下Git使用入门
    Linux创建新用户,给予FTP操作权限
    mysql数据库设置远程连接权限
    Linux下修改mysql的root密码后数据库消失怎么处理
    php mysql 存储 IOS Emoji表情失败和乱码问题
    RDS for MySQL 如何定位本地 IP
    Geohash距离估算
    GeoHash核心原理解析
    阿里云配置免费DVSSL证书(For Apache)
  • 原文地址:https://www.cnblogs.com/jl-bai/p/5539630.html
Copyright © 2020-2023  润新知