• 函数二


    函数二

    迭代器

    • 通用的迭代取值方案,惰性计算,能节省内存,不能反复,只能向下执行
    dic = {'q':1,'w':2,'e':3}
    dic_iterator = dic.__iter__()
    res1 = dic_iterator.__next__()
    print(res1)
    res2 = dic_iterator.__next__()
    print(res2)
    res3 = dic_iterator.__next__()
    print(res3)
    dic_iterator.__next__()  # 报错   StopIteration  取完
    while True:
        try:
            res = dic_iterator.__next__()
            print(res)
        except StopIteration
        	break
    
    • 可迭代对象 内置有_iter__方法的类型称为可迭代对象/类型

      • str,list, tuple, dict, set ,文件对象(同时也是迭代器对象)
      a = 'abc'
      print(dir(a))  # dir查看对象的方法和函数
      # 在打印结果中寻找__iter__ 如果存在就表示当前的这个类型是个可迭代对象
      
    • 迭代器对象 内置有__iter____next__方法

    • 迭代器对象一定是可迭代对象,反之不一定

    生成器

    • 自定生成器:凡是函数内出现了yield关键字,调用函数将不会执行函数体代码,会得到一个返回值,该返回值就是我们自定义的迭代器,称之为生成器
    def fun():
        print('hello')
        yield 1
        print('你好')
    	yield 2
        print('666')
        yield 3
    g = fun()
    print(g)  # <generator object func at 0x000001FC98A9F8C8>表示得到的时内存地址
    res=next(g)
    print(res)  # hello  1
    res=next(g)
    print(res)  # 你好  2
    
    def func():
        lst = ['1','2','3','4']
        yield from lst  # 可以直接把可迭代对象中的每一个数据作为生成器的结果进行返回
    g = func()
    for i in g:
        print(i)
    
    yield VS return
    相同点:都可以用来返回值
    不同点:
    return  只能返回一次值,函数就立即结束了
    yield  能返回多次值,yield可以挂起函数
    
    • 推导式
    info = [i for i in range(5) if i % 2 = 0 ]  # [2,4]
    info = {'qi':i for i in range(6)}
    info = {i for i in range(6)}
    
    • 生成器推导式
    gen = (i for i in range(6) if i > 3)  # 
    #推导式有, 列表推导式, 字典推导式, 集合推导式, 没有元组推导式
    #生成器表达式: (结果 for 变量量 in 可迭代对象 if 条件筛选)
    #生成器表达式可以直接获取到⽣成器对象. ⽣成器对象可以直接进行for循环. ⽣成器具有惰性机制.
    #集合推导式和字典推导式很是类似,记住一个小技巧能够快速区分那个是字典那个是集合
    #字典推导式前面的结果是有个冒号,而集合的前面结果就是单纯的结果
    
  • 相关阅读:
    WebSocket
    Redis
    Memcached
    Python实现支付宝在线支付
    RabbitMQ
    linux内核优化
    kafka资源
    推荐相关
    机器学习好网站
    逻辑回归(logistic regression)的本质——极大似然估计
  • 原文地址:https://www.cnblogs.com/feiguoguobokeyuan/p/13361713.html
Copyright © 2020-2023  润新知