• python开发学习day17 (生成器;面向过程;三元表达式;生成式,内置函数)


    2020-06-23                           目录:

    一、生成器

    1.1  什么是生成器

    1.2  如何得到生成器

    二、面向过程的编程思想

    2.1  编程思想

    2.2  面向过程

    三、三元表达式

    四、生成式

    4.1  列表生成式

    4.2  字典生成式

    4.3  集合生成式

    4.4  生成器表达式

    五、内置函数

    一、生成器

    1.1  什么是生成器

    生成器就是一种自定义的迭代器,用来返回多次值
    好处:节省内存
    return只能返回一次值,然后函数立马结束
    yield:可以挂起函数,保留函数的运行状态
    可以返回多次值

    1.2  如何得到生成器

    函数内但凡存在yield关键字,调用函数不会执行函数体代码,会得到一个返回值,这个返回值就是自定义的迭代器
    def diy_range(start_num, end_num, step=1):
        while start_num < end_num:
            yield start_num
            start_num += step
    
    
    g = diy_range(1, 5, 2)
    print(g)  # >>> <generator object diy_range at 0x000001A1F484C9E0>
    for i in g:
        print(i)  

    二、面向过程的编程思想

    2.1  编程思想

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

    2.2  面向过程

    面向过程的核心就是过程,过程就是解决问题的步骤
    基于过程编程就类似于设计一条条环环相扣的流水线
    
    优点:将复杂的问题流程化,进而简单化
    缺点:所有环节耦合到一起,环环相扣,如果要修改某个环境,有可能会牵一发而动全身,扩展性差

    三、三元表达式

    def max2(x,y):
        if x > y:
            return x
        else:
            return y

      上面为一段选出两个值中最大值的代码,用三元表达式就可以一行代码解决:

    res = x if x>y else y

      即 res = 条件成立时返回的值 if 条件 else 条件不成立时的返回值

    四、生成式

    4.1  列表生成式

    l1 = [i for i in range(1,11)]  # 代替for循环将1-10存进列表
    
    num = [1, 2, 3, 4, 5] l2 = [i for i in num if i > 3] # 取num中大于3的值存进l2

    4.2  字典生成式

    dic = {"name": "jason", "age": 18, "gender": "male", "level": 10}
    new_dic = {k + '_': str(v) for k, v in dic.items() if k != 'level'}  # 除了‘level’,将dic中所有的key加上'_'。并将所有的value转换成字符串

    4.3  集合生成式

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

    4.4  生成器表达式

    p = (i for i in range(5))
    print(p)  # >>> 得到一个生成器<generator object <genexpr> at 0x000001A6C637C9E0>
    for i in p:
        print(i)

    五、内置函数

    5.1  abs()

    取绝对值

    print(abs(-5))  # >>>5

    5.2  all()

    ① 传入可迭代对象中取出来的值,全真才为真,一假则为假

    ② 如果从传入的可迭代对象中取不出任何值,则默认返回 True

    print(all([1,True,"abc"]))  #>>>True
    print(all([1,True,"abc",None]))  #>>>False
    print(all([]))  # >>>True

    5.3  any()

    ① 传入可迭代对象中取出来的值,全假才为假,一真则为真

    ② 如果从传入的可迭代对象中取不出任何值,则默认返回 False

    print(any([0,None,False,"",1]))  # >>> True 

    5.4  callable()

    判断函数是否可以被调用,返回bool值

    5.5  bin()、 oct()、 hex()

     bin()  将十进制数转化成二进制数
     oct()  将十进制数转换成八进制数
     hex()  将十进制数转换成十六进制数

    5.6  chr() 与 ord()

    ord()将字符转换成对应的ASCII十进制数
    chr()将十进制数转换成对应的ASCII字符

    5.7  divmod()

    print(divmod(10,3))  # >>>(3,1)  以元组的形式返回商和余数

    5.8 enumerate

    l=[111,222,333]
    for i,item in enumerate(l): 
        print(i,item)  # 取索引值和索引对应的值
  • 相关阅读:
    自动对一个文件夹下的N个word文件批量执行一个宏
    PHP正则匹配联系方式手机号、QQ、微信、邮箱、固定电话
    私信基本功能数据库设计
    ArcGIS三分式标注、四分式标注和同时上下标实现
    Word2019文档中将页面边框更改为文本边框的方法
    Arcgis彻底删除和卸载
    ArcMap中各种基本概念的介绍
    ArcGIS Python工具箱.pyt裁剪工具
    C# Object对象的ToString方法在转换日期时丢失毫秒
    2020年糖尿病领域中国学者学术影响力排名
  • 原文地址:https://www.cnblogs.com/cui-cheng/p/13183220.html
Copyright © 2020-2023  润新知