zoukankan      html  css  js  c++  java
  • 博客

    1.生成器:

    就是一种自定义的迭代器,是用来返回多次值
    自定义迭代器的好处:

    节省内存

    return只能返回一次值,函数就立即结束了

    2.yield

    ​ 1、可以挂起函数,保存函数的运行状态
    ​ 2、可以用来返回多次值

    def func():
        print('11111111111')
        print('11111111111')
        print('11111111111')
        print('11111111111')
        print('11111111111')
        yield 1, 2
        print('222212222222')
        yield
        print('3333333333333')
        yield 3
        print('44444444444')
    
    
    如何得到生成器(自定义的迭代器):
        函数内但凡存在yield关键字,调用函数不会执行函数体代码,会得到一个返回值,该返回值就是我们自定义的生成器
    
    
    g = func()
    print(g)
    
    g.__iter__()
    g.__next__()
    
    res1 = next(g)
    print(res1)
    
    
    res2 = next(g)
    print(res2)
    
    res3 = next(g)
    print(res3)
    
    next(g)
    
    
    
    def my_range(start, stop, step=1):
        while start < stop:
            yield start
            start += step
    
    g=my_range(1,5)
    print(next(g))
    print(next(g))
    print(next(g))
    print(next(g))
    print(next(g))
    
    for i in my_range(1,5000):
        print(i)
    

    3、编程思想就是编写程序的套路,与具体的技术点无关

    4、面向过程

    核心是过程二字,过程就是解决问题的步骤,即先干啥、再干啥、后干啥
    基于面向过程编程就好比在设计一条条的流水线

    优点:将复杂的问题流程化、进而简单化
    缺点:所有环节耦合到一起,环环相扣,如果要修改某个环境,有可能会牵一发而动全身,扩展性差

    5.三元表达式

    def max2(x,y):
        if x > y:
            return x
        else:
            return y
    
    
    res=max2(1,2)
    
    x=1
    y=2
    
    res=x if x > y else y
    print(res)
    
    res=条件成立时返回的值 if 条件 else 条件不成立时的返回值
    

    6.生成式

    1、列表生成式

    l=[]
    for i in range(11):
        if i > 3:
            l.append("x")
    
    l = ["x" for i in range(11) if i > 3]
    
    print(l)
    

    示范1:

    names = ["egon_nb", "lxx_sb", "猴子_sb", "jason_sb"]
    
    l=[]
    for name in names:
        if name.endswith("sb"):
            l.append(name)
    
    
    l = [name for name in names if name.endswith("sb")]
    
    print(l)
    

    示范2:

    names = ["lxx", "猴子", "jason"]
    print([name+"_sb" for name in names])
    

    2、字典生成式

    dic = {"name": "egon", "age": 18, "gender": "male", "level": 10}
    
    new_dic = {k.upper(): v for k, v in dic.items() if k != "level"}
    new_dic = {k+"_": str(v) for k, v in dic.items() if k != "level"}
    print(new_dic)
    

    3、集合生成式

    s = {i for i in "hello" if i != "l"}
    print(s)
    

    4、生成器表达式

    res = (i for i in range(5))
    print(res)
    
    print(next(res))
    print(next(res))
    print(next(res))
    print(next(res))
    print(next(res))
    print(next(res))
    

    7.内置函数

    1、abs
    print(abs(-1))
    print(abs(1))
    
    2、all():

    2.1、传入的可迭代对象取出的值,全真则真,一假则假
    2.2、如果传入的可迭代对象取不出任何值,默认返回True

    print(all([1,1,1,True,"abc"]))
    print(all([1,"",1,True,"abc"]))
    print(all([]))
    
    3、any():

    3.1、传入的可迭代对象取出的值,一真则真,全假才假
    3.2、如果传入的可迭代对象取不出任何值,默认返回False

    print(any([0,None,False,"",1]))
    print(any([]))
    
    4、callable
    def func():
    
    ​    pass
    print(callable(func))
    print(callable(len))
    print(callable(10))
    
    print(bin(11))  # 0b1011
    print(oct(11))  # 0o13
    print(hex(11))  # 0xb
    
    5、chr与ord
    print(ord("a"))
    print(chr(97))
    
    6、divmod
    print(divmod(10,3))
    
    7、enumerate
    l=[111,222,333]
    for i,item in enumerate(l): #i,item=(0,111)
        print(i,item)
    
    
    for i,item in enumerate({"k1":111,"k2":222}): #i,item=(0,111)
        print(i,item)
  • 相关阅读:
    GPU上的随机森林:比Apache Spark快2000倍
    基于TensorFlow2.x的实时多人二维姿势估计
    用code2vec、glow和spaCy进行词嵌入
    如何进行数据科学竞赛?(EDA)
    Python性能分析技巧
    PyTorch中基于TPU的FastAI多类图像分类
    GitHub上的AutoML
    Keras vs PyTorch vs Caffe:CNN实现对比
    深度学习的学习率调节实践
    win7下MariaDB10.0的my.ini配置文件的位置
  • 原文地址:https://www.cnblogs.com/lgh8023/p/13182561.html
Copyright © 2011-2022 走看看