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)  # 取索引值和索引对应的值
  • 相关阅读:
    某个牛人做WINDOWS系统文件详解
    常用ASP脚本程序集锦
    LINUX基础:文件安全与权限
    proftpd+mysql+quota
    apache2.0.49tomcat5.0.19jk2建立virtualHost
    URL Redirection(转) Anny
    顶级域名后缀列表(转) Anny
    \u4E00\u9FA5意义 Anny
    How to POST Form Data Using Ruby(转) Anny
    How to get rid of 'Enter password to unlock your login keyring' in Ubuntu(转) Anny
  • 原文地址:https://www.cnblogs.com/cui-cheng/p/13183220.html
Copyright © 2011-2022 走看看