zoukankan      html  css  js  c++  java
  • 迭代器和生成器补充

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

    递推
    回溯

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

  • 相关阅读:
    WalkDirFiles
    http://ocpj8.javastudyguide.com/
    打印文件夹中的文件
    apple
    JDBC
    JDBC connection
    Properties-getProperty
    删除目录中指定文件
    spark 之knn算法
    hbase查询基于标准sql规范中间件Phoenix
  • 原文地址:https://www.cnblogs.com/zhangjinyi97/p/12570679.html
Copyright © 2011-2022 走看看