• 匿名函数


    递归之二分法

    def sc_func(num,lis):
        lis_len=int(len(lis)/2)
        binary_num=lis[lis_len]
        # print(binary_num)
    
        if len(lis)==1:
            print('没找到')
            return
        if binary_num>num:
            lis=lis[:lis_len]
            sc_func(num,lis)
        elif num<binary_num:
            lis=li1s[lis_len,lis]
            sc_func(num,lis)
    
        else:
            print('找到了')
    

    匿名函数

    1.有名函数
    以前定义的函数都是有名函数,它是基于函数名使用
    2.匿名函数
    匿名函数,他没有绑定名字,使用一次即被收回,加括号即可运行

    lambda x,y:x+y
    

    与内置函数联用

    匿名函数通常与max(),sorted(),filter()方法联用

    salary_dict = {
        'nick': 3000,
        'jason': 100000,
        'tank': 5000,
        'sean': 2000
    }
    max(salary_dict): tank
    max(salary_dict, key=func()): jason
    max(salary_dict, key=lambda name: salary_dict[name]): jaso
    

    1.如果我们想从上述字典中取出薪资最高的人,我们可以使用max()方法,但是max()默认比较的是字典的key。
    首先将可迭代对象变成迭代器对象
    res=next(迭代器对象),将res当做参数传给key指定的函数,然后将该函数的返回值当做判断依据

    2.如果我们想对上述字典中的人,按照薪资从大到小排序,可以使用sorted()方法。

    sorted()工作原理:

    首先将可迭代对象变成迭代器对象
    res=next(迭代器对象),将res当做参数传给第一个参数指定的函数,然后将该函数的返回值当做判断依据。

    lis = [1, 3, 2, 5, 8, 6]
    sorted(lis)
    print(f"lis: {lis}")
    print(f"sorted(lis,reverse=True): {sorted(lis,reverse=True)}")
    
    #结果
    lis: [1, 3, 2, 5, 8, 6]
    sorted(lis,reverse=True): [8, 6, 5, 3, 2, 1]
    

    3.如果我们想对一个列表中的某个人名做处理,可以使用map()方法。

    map()工作原理:

    首先将可迭代对象变成迭代器对象
    res=next(迭代器对象),将res当做参数传给第一个参数指定的函数,然后将该函数的返回值作为map()方法的结果之一。
    4.如果我们想筛选除名字中含有'sb'的名字,我们可以使用filter()方法。

    filter()工作原理:

    首先将可迭代对象变成迭代器对象
    res=next(迭代器对象),将res当做参数传给第一个参数指定的函数,然后filter会判断函数的返回值的真假,如果为真则留下。

    常用内置函数

    bytes()
    chr()/ord()
    divmod()
    enumerate()
    eval()
    hash()
    1.bytes()

    解码字符
    res = '你好'.encode('utf8')
    print(res)

    2.chr()/ord()

    chr()参考ASCII码表将数字转成对应字符;ord()将字符转换成对应的数字。

    3.divmod()

    分栏

    4.enumerate()

    带有索引的迭代。

    5.eval()

    把字符串翻译成数据类型。
    6.hash()

    是否可哈希。

    了解

    abs() --求绝对值
    all() --可迭代对象内元素全为真,则返回真。
    any()--可迭代对象中有一元素为真,则为真。
    bin()/oct()/hex()--二进制、八进制、十六进制转换。
    dir()--列举出所有time的功能。
    frozenset()--不可变集合。
    globals()/loacals()--查看全局名字;查看局部名字。
    pow()
    round()
    slice()
    sum()
    import()--通过字符串导入模块。

    面向过程编程

    面向过程编程是解决问题的一种思想,相当于武林门派,武林门派之间没有好坏之分,因此它与我们之后学习的面向对象编程其实没有好坏之分。

    面向过程编程,核心是编程二字,过程指的是解决问题的步骤,即先干什么、后干什么、再干什么、然后干什么……

    基于该思想编写程序就好比在设计一条流水线,面向对称编程其实是一种机械式的思维方式。

    当我们写登录功能,我们首先需要输入账号、密码,然后认证两次密码是否相同,然后从数据库中读取密码验证用户密码输入是否正确,然后输入验证码……之后,我们就能够实现登录功能。这样把登录功能问题流程化,进而是解决问题的思路非常清晰。

    优点:复杂的问题流程化,进而简单化。

    生产汽水瓶的流水线,没办法生产特斯拉。流水线下一个阶段的输入与上一个阶段的输出是有关联的。因此他的扩展性极差。

    缺点:扩展性差。

  • 相关阅读:
    福州KTV
    MSN登陆不上:微软谴责中国的“技术问题”
    DB2 存储过程开发最佳实践
    在DB2存储过程中返回一个数据集
    Host is not allowed to connect to this MySQL server 解决方案
    CentOS安装中文支持
    ImportError: libpq.so.5: cannot open shared object file: No such file or directory
    CentOS 终端显示中文异常解决办法
    pytestDemo
    python 获取当前运行的类名函数名
  • 原文地址:https://www.cnblogs.com/bladecheng/p/10976595.html
Copyright © 2020-2023  润新知