• 迭代器与生成器


    今日内容:

    迭代器:
    
    可迭代对象:但凡内置有__iter__方法的都是可迭代对象
    
    d1 = d.__iter__()
    d1是个迭代器
    d1.__next__() 
    取下一个值
    可以print出来
    
    迭代器对象:内置有__next__方法的,并且内置有__iter__方法的对象
    迭代器对象.__next__() 得到下一个值
    迭代器对象.__iter__() 得到迭代器本身
    
    文件是迭代器
    
    
    生成器:
    def func():
        yield 1
        yield 2
        yield 5
    g = func()
    g 是个生成器,generator,是个迭代器,,,
    
    g.__next__()
    运行到第一个yield暂停返回
    
    len('www')   __len__()
    next(g)    __next__()
    iter(可迭代对象)  __iter__()
    

    x = yield 返回值

    while True:
        x = yield None
        print('{}'.format(x))
    

    可以一直next
    g = func()

    g.send('狗吃骨头')
    把变量给了x
    g.send(None) 相当于next(g)
    把程序运行到yield处,必须先有yield才能send

    g = dog('a')
    g.send(None) # 先把狗叫过来
    g.send('骨头') #然后喂东西
    g.send('包子')
    ...

    程序挂起,准备好了就运行,等待着值

    g.close()
    关闭生成器

    不能send两个值,可以传一个列表等
    将值给了yield,在传给了x,返回的一直 是 111,
    传给x,运行,返回值

    三元表达式:res = x if 1 > 2 else y
    列表生成式:l = [x for x in l if x.startswith('a')]
    字典生成式:dic = {key:None for key in keys}
    res = {k:v for k,v in items if k != 'gender'}

    res = ()
    生成生成器,元组不可变

    递推
    回溯

    从回溯最终结果回溯到最初,再从最初的值递推得出最终的结果

  • 相关阅读:
    SecureCRT的SFTP在Windows与Linux之间传输文件
    VBS基础篇
    VBS数组函数学习实例分析
    vbs操作txt文本文件常用方法(函数)
    VBS基础篇
    CF91B Queue(单调队列+二分)
    CF1343D Constant Palindrome Sum(差分)
    CF1336C Kaavi and Magic Spell(区间dp)
    AcWing255 第K小数(整体二分)
    P3515 [POI2011]Lightning Conductor (四边形不等式优化)
  • 原文地址:https://www.cnblogs.com/pythonwl/p/12560350.html
Copyright © 2020-2023  润新知