• 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)

     

  • 相关阅读:
    C语言第四次博客作业嵌套循环
    C语言第六次博客作业数据类型
    C语言第五次博客作业函数
    C语言第二次博客作业分支结构
    MD5 DSA RSA 简单 区别
    关于Linux Grep命令使用的详细介绍
    最好、最智能化、最方便的Java开发软件 IntelliJ IDEA 10.5.2
    Linux Find 命令精通指南
    linux 下面递归查找
    公钥和私钥的解释
  • 原文地址:https://www.cnblogs.com/jl-bai/p/5539630.html
Copyright © 2020-2023  润新知