zoukankan      html  css  js  c++  java
  • 迭代器,生成器,枚举

    一、迭代器

    1、通过迭代器取值的优缺点

          优点:不依赖索引取值,完成取值

          缺点:不能计算长度,不能指定位取值(只能从前往后逐一取值)

    2、可迭代对象

          可迭代对象是有—iter—()方法的对象,调用该方法返回迭代器对象

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

    3、迭代器对象:

          迭代器对象:有—next—()方法的对象,也就是用该方法一次从迭代器对象中获取一个值,取出一个少一个

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

    重点:

    1、从迭代器对象中取元素,取一个少一个,如果啊哟从头开始取,需要重新获得拥有所有元素的迭代器对象

    2、迭代器对象也有—iter—()方法,调用后得到的是自己本身(当前含义几个元素,得到的就只有几个元素的迭代器对象) 

    4、for循环迭代优点

          自动获取被迭代对象的迭代器对象

          在内部一次一次调用—next—()方法取值

          自动完成异常处理

    二、生成器

    1、生成器:包含yied关键字的函数就是生成器

    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

    2、生成器的应用案例

    当访问的数据资源过大,可以将数据用生成器处理,一次获取所有内容的一条资源

    def my_range(min, max=0, step=1):
    if max == 0:
    min, max = max, min
    tag = min
    while True:
    if tag >= max:
    break
    yield tag
    tag += step
    range_obj = my_range()
    range_obj = my_range(5,10,2)
    for i in range_obj:
    print (i)

    三、枚举对象
    枚举对象:通过for迭代器循环遍历可迭代对象,需要知道迭代的索引
    l = [1,3,5,7,9]
    for i, v in enumerate(l)
    print(i,v) #生成迭代器对象:[(0,1),(1,3),(2,5),(3,7),(5,9)]


  • 相关阅读:
    cookie.js插件
    cookie.js插件的案例
    解决mysqli的中文乱码问题
    mysqli字符编码
    小人行走的动画案例
    原生js中用Ajax进行get传参
    php操作数据库
    数据库的信息处理
    数据库的dos命令
    面向对象php 接口 抽象类
  • 原文地址:https://www.cnblogs.com/yanminggang/p/10648892.html
Copyright © 2011-2022 走看看