zoukankan      html  css  js  c++  java
  • python中基础知识之迭代器

    一,迭代器简述

    是一个迭代取值的工具,使用迭代器,让每次重复过程。并且每次结果都是基于上次结果上的。

    迭代器

               优点:迭代器不依赖索引取值,不占用过多的内存空间

               缺点:取值麻烦,必须依次一个一个取值,不能倒着取,取完为止,如果没有监测异常,否则取完值就会报错

                                    

    二,可迭代对象与迭代器对象

    1,可迭代对象:是在数据类型中调用内置功能时,内置方法中有'__iter__'的,都为可迭代对象。

                          可迭代对象不一定是迭代器对象

    #常用的数据类型中有以下几种为可迭代对象:
    #都可调用__iter__
    str      #字符串
    list     #列表
    tupl     #元组
    dict     #字典
    set      #集合
    file     #文件   本身就是迭代器对象 

    2,迭代器对象:可迭代对象执行__iter__方法取到的值就是迭代器对象。

                         有内置方法__iter__和__next__。

                         迭代器对象一定是可迭代对象

    d = {'x':1,'y':2}      #这个为可迭代对象
    iter_d = d.__iter__  # iter_d 这个就是迭代器对象
    print(iter_d.__next__) #迭代取值
    

      

    三,生成器对象

    生成器对象本质上就是自定义的一个迭代器对象。

    在函数体内有yield,再调用函数时,不会执行体内的代码,拿到的返回值就是一个生成器对象。

    在函数体内由yield来返回一个或多个值,但函数体运行只是暂停,在该语句后,并不结束函数体.(普通函数是由return来返回一个或多个值的,且函数运行结束)

    def chicken():
            print('>>>>:第一次')
            yield 1
            print('>>>>:sencond')
            yield 2
    
    obj = chicken()
    res = obj.__next__
    print(res)            

    四,生成器表达式:

    当数据类型比较大的时候,就采用生成器表达式来做一个生成器。方便取值

    l = (i for i in range(19999))
    print(next(l))
    

      

     五,面向过程编程思想:

    面向过程编程思想:基于面向过程编程就相当于在设计一条流水线生产零件一样,方式比较机械化。

                                  优点:复杂的问题流程化,进而简单化。

                                  缺点:可扩展性较差。

                                  用于扩展性要求低的场景。

    六,涉及到的题目

    def multipliers():
        return [lambda x: i*x for i in range(4)]
    print([m(2) for m in multipliers()])  # [6,6,6,6]
  • 相关阅读:
    简单对称加密
    temp
    标点符号
    PHP定时执行计划任务
    从杨致远辞去雅虎说起,那些衰落的网站巨头给我们的启示
    JS判断手机浏览器
    如何制作在线参考手册
    不是每个程序员都是适合创业,即使你工作了十年
    两级导航栏联动效果
    关于腾讯ip接口一个流传很广的错误用法
  • 原文地址:https://www.cnblogs.com/wujc3/p/11189435.html
Copyright © 2011-2022 走看看