zoukankan      html  css  js  c++  java
  • 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)  # 取索引值和索引对应的值
  • 相关阅读:
    MySql相关
    RabbmitMQ 的配置及开启MQTT服务
    cmake 编译.so or .a文件很大问题
    模型上移动端遇到简单的问题:No variants found for 'app'
    第一次用go mod模式创建beego1.12的步骤
    python中RabbitMQ的使用hello world简单模式
    Ubuntu18.04 20.04安装rabbitMQ
    Django的mysqlclient报错
    《软件需求》读书笔记六
    《软件需求》读书笔记五
  • 原文地址:https://www.cnblogs.com/cui-cheng/p/13183220.html
Copyright © 2011-2022 走看看