• 迭代器和生成器补充


    迭代器:
    
    可迭代对象:但凡内置有__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 = ()
    生成生成器,元组不可变

    递推
    回溯

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

  • 相关阅读:
    MySQL学习笔记:repeat、loop循环
    链表//相交链表
    单位和值
    链表//环形链表 II
    css样式设置小技巧
    链表//环形链表
    CSS代码缩写,占用更少的带宽
    CSS布局模型
    CSS盒模型
    CSS格式化排版
  • 原文地址:https://www.cnblogs.com/zhangjinyi97/p/12570679.html
Copyright © 2020-2023  润新知