zoukankan      html  css  js  c++  java
  • 列表生成式、生成器、迭代器

    一、列表生成式:
    按一定规律生成的列表代码,代码如下:
    >>> a = [i+1 for i in range(10)]
    >>> a
    [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
    相当于:
    >>>a = []
    >>>for i in range(10)
    a.append(i+1)
    >>>a
    [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

    作用:使代码更简洁。

    二、生成器:
    1、列表元素可以按照某种算法推算出来,一边循环一边计算的机制,不必创建完整的list,从而节省大量的空间,称为生成器:generator
    2、方法一、把一个列表生成式的[]改成(),就创建了一个generator
    >>> L = [x * x for x in range(10)]
    >>> L
    [0, 1, 4, 9, 16, 25, 36, 49, 64, 81...............##是一个列表
    >>> g = (x * x for x in range(10))
    >>> g
    <generator object <genexpr> at 0x1022ef630>.........##是一个生成器

    方法二、 函数带yield 语名也是一个生成器。

    3、 使用next(g)或for循环方法去输出生成器内容,通常都是用for循环。
    next():一次输出一个元素,没有更多的元素时,抛出StopIteration的错误。
    for循环:一次输出所有的元素,没有StopIteration的错误中的return 返回值。
    4、作用:提高程序运行效率

    三、迭代器:

    迭代对象和迭代器:
    1、凡是可作用于for循环的对象都是Iterable(迭代对象)类型。(一类是集合数据类型,如list、tuple、dict、set、str等,一类是generator,包括生成器和带yield的generator function)
    isinstance()判断一个对象是否是Iterable对象
    2、凡是可作用于next()函数的对象都是Iterator(迭代器对象)类型,可以使用isinstance()判断一个对象是否是Iterator对象。
    3、集合数据类型如list、dict、str等是Iterable但不是Iterator,可以通过iter()函数使它成为一个Iterator对象。

    功能:多任务并行运行,提高程序运行效率(吃包子代码)
  • 相关阅读:
    【C++ 系列笔记】03 C++ 面向对象进阶
    【C++ 系列笔记】02 C++ 面向对象基础
    【C++ 系列笔记】01 C++ 与 C
    【JavaScript】简单取随机数 ~~(Math.random() * number)
    英语测试
    Linux指令入门
    RE-攻防世界 T3 insanity
    PWN-攻防世界 level0
    ISCC不会的理论题
    kali linux配置ssh
  • 原文地址:https://www.cnblogs.com/wc-chan/p/8306657.html
Copyright © 2011-2022 走看看