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)
  • 相关阅读:
    DGA域名可以是色情网站域名
    使用cloudflare加速你的网站隐藏你的网站IP
    167. Two Sum II
    leetcode 563. Binary Tree Tilt
    python 多线程
    leetcode 404. Sum of Left Leaves
    leetcode 100. Same Tree
    leetcode 383. Ransom Note
    leetcode 122. Best Time to Buy and Sell Stock II
    天津Uber优步司机奖励政策(12月28日到12月29日)
  • 原文地址:https://www.cnblogs.com/lgh8023/p/13182561.html
Copyright © 2011-2022 走看看