zoukankan      html  css  js  c++  java
  • 迭代器与生成器

    一:迭代器
    1.1引入几个概念:迭代器,可迭代对象,迭代器对象,
    器:可以包含多个元素的容器
    迭代:循环反馈,一次一个
    迭代器:从装有多个值的容器中一次取出一个值给外界
    遍历:被遍历的对象必须是有序容器
    list和str以及tuple靠索引取值,有序容器,可以被遍历
    1.2可迭代对象
    对象:python中的一个对象(装有地址的变量)
    可迭代对象:该对象有_iter_()方法
    [],(),字典和集合等
    1.3迭代器对象
    可迭代对象通过iter得到迭代器对象,可以用next方法取值
    迭代器对象可以做到不依赖索引取值,用next方法取值是从前往后有序的
    迭代器对象取一个值就少一个值,取空了的话要重新生成迭代器对象
    1.4 for循环迭代器,自带异常处理的while循环
    自动获取被迭代对象的对象

    总结:
    可迭代对象:有_iter_()方法的对象,调用该方法返回迭代器对象
    迭代器对象:有_next_()方法的对象,调用该方法从迭代器对象中一次捕获一个值
    for循环迭代器:
    1:自动获取被迭代对象的迭代器对象,
    2:在内部一次一次调用—next方法取值
    3:自动完成异常处理
    二:生成器
    它就是一个包含yield关键字的函数
    它是一个迭代器对象,也就是一个可迭代对象,该函数调用得到的是生成器的对象,且不会执行函数体
    def g_fn():
    print(111111111111111)
    yield '结果1'
    print(222222222222222)
    yield '结果2'
    print(333333333333333)
    yield '结果3'
    print(444444444444444)
    yield '结果4'
    print(555555555555555)
    yield '结果5'
    g_obj = g_fn()
    函数执行一次,在遇到下一个yield的时候停止,且可以拿到yield返回值,
    r1=g_obj._next_()
    print(r1)
    r2=g_obj._next_()
    print(r2)
    生成器可以被for循环迭代
    三:枚举对象
    通过for迭代器 循环遍历 可迭代对象,需要知道迭代的索引
    ls=[1,2,3,4,5]
    for i v in enumerate(ls)
    print(ls)

    承蒙关照
  • 相关阅读:
    向Url发送post请求传递参数
    表格列转行
    C#匹配HTML中的图片地址
    C# 正则表达式(备忘录)
    将天文数字转换成中文大写
    搜索引擎优化排名因素小结
    WPF概述
    将中文汉字转换成拼音(全拼)
    提取网页中的链接并生成xml
    快速排序算法的实现
  • 原文地址:https://www.cnblogs.com/guanlei/p/10649128.html
Copyright © 2011-2022 走看看