zoukankan      html  css  js  c++  java
  • python之迭代器、可迭代对象、生成器、生成器对象、枚举类型

    迭代器

    # 迭代器:循环反馈的容器(集合类型)
    # -- 不同于索引取值,但也可以循环的从容器对象中从前往后逐个返回内部的值

    # 优点:不依赖索引,完成取值
    # 缺点:不能计算长度,不能指定位取值(只能从前往后逐一取值)

     

    可迭代对象

    # 可迭代对象:内置有__iter__()方法的对象,称之为可迭代对象

    # 可迭代对象:str | list | tuple | set | dict | range() | enumerate() | file | 生成器对象

     

    迭代器对象

    # 迭代器对象:内置有__next__()方法的对象,称之为迭代器对象,可以通过调用__next__()方法完成取值

    # 迭代器对象:enumerate() | file | 生成器对象

    # 注:迭代器对象调用__iter__()方法返回的还是迭代器对象

     

    迭代器

    # 迭代器:for循环
    # 工作原理:
    # -- 1.获取可迭代对象的迭代器对象
    # -- 2.循环__next__()取值
    # -- 3.异常处理(StopIteration),停止迭代

     

    生成器

    # 生成器:一次生成一个值得容器(函数类型)
    # -- 内部包含yield关键字的函数

    # 注:函数的调用不会执行函数,而是返回生成器对象

     

    生成器对象

    # 生成器:包含yield关键字的函数就是生成器
    def my_generator():
    yield 1
    yield 2
    yield 3
    g_obj = my_generator()
    # my_generator()并不会执行函数体,得到的返回值就是生成器对象
    # 生成器对象就是迭代器对象
    r1 = g_obj.__next__() # 1

    for v in g_obj:
    print(v) # 2 | 3

     

    枚举对象

    # 枚举对象:通过enumerate()方法,可以为可迭代对象生成迭代索引,其本身也是一个迭代器对象
    enumerate()接收两个参数,可迭代对象,默认值
    L= [9,2,3]

     for i,item in enumerate(L,start = 0)

       print(i,item)

    >>>

    0  9

    1  2

    3  3

  • 相关阅读:
    9.Nginx常用模块
    8.Nginx基本概述
    7.HTTP协议
    6. SSH远程管理服务实战
    5. Sersync实时同步
    docker 安装 rabbitMQ服务器
    rabbitmq pika(python)订阅发布多客户端消费场景简单使用
    rabbitmq和kafka大概比较
    flask接收跨域请求
    命令提示符出现-bash-4.1$如何解决
  • 原文地址:https://www.cnblogs.com/dongxixi/p/10649266.html
Copyright © 2011-2022 走看看