zoukankan      html  css  js  c++  java
  • python基础之递归,匿名,内置函数

    递归函数:

             什么是递归函数?

                      函数递归调用:在调用一个函数的过程中,又直接或间接地调用了该函数本身。

             递归必须要有两个明确的阶段:

                      ①递推:一层一层递归调用下去,强调:每进入下一层问题规模减少

                      ②回溯:递归必须要有一个明确的结束条件,在满足该条件时,结束递推,开始一层一层回溯

             递归的精髓在于通过不断地重复逼近一个最终的结果

             递归的应用:

                      二分法:

    l=[1,2,10,30,33,99,101,200,301,311,402,403,500,900,1000] #从小到大排列的数字列表
    def search(n,l):
        print(l)
        if len(l) == 0:
            print('not exists')
            return
        mid_index=len(l) // 2
        if n > l[mid_index]:
            #in the right
            l=l[mid_index+1:]
            search(n,l)
        elif n < l[mid_index]:
            #in the left
            l=l[:mid_index]
            search(n,l)
        else:
            print('find it')
    
    
    search(3,l)
    

     

    匿名函数:

             什么是匿名函数:匿名函数就是没有名字的函数,没有名字就意味着用一次就回收了

             lambda x,y:x+y

        有名函数与匿名函数的对比
         有名函数:循环使用,保存了名字,通过名字就可以重复引用函数功能
         匿名函数:一次性使用,随时随时定义
     
    内置函数:
    names={
        'egon':3000,
        'alex':100000000,
        'wupeiqi':10000,
        'yuanhao':2000
    }
    1.max()  and  min()
    工作原理:1.首先将迭代对象变成迭代器对象
            2.res = next(可迭代对象),将res当作参数返回值,传给key指定的函数,然后将该函数的返回值当作判断比较大小的key
          max(names,key = lambda k:names[k])
     
    2.sorted(names,key = lambda k:names[k],reverse = False) 
            结果为['yuanhao', 'egon', 'wupeiqi', 'alex']
            reverse 默认为false,false为从小到大排列
     
    3.   l = [1,2,3,4]
        map(lambda x:x**2,l)
        工作原理与max相同,但最后返回的是一个迭代器
     
    4.filter(lambda k:names[k] > 5000,names)
        返回值为迭代器,留下true的结果
     
    带*的必须掌握
    杂:abs() 求绝对值       all()迭代每个元素,都为True才返回True,空返回True
    bin() 转换为二进制      any()迭代每个元素,有一个True就返回True,空返回False
    oct() 转换八进制               *bytes(‘您好’, encoding = ‘utf-80’) = ‘您好’.encode(‘utf-8’)
    hex() 转十六进制               callable()检测是非可以被调用
    *chr() 参考ASCII将数字转换成对应字符串
    *ord() 参考ASCII将字符串转换成对应数字
    dir(time) 列举time.后面的所有方法    *divmod(10,3)  得到 (3,1) 即(商,余数)
    *eval(‘[1,2,3]’)  可以把字符串里面的列表变成列表
    frozenset({1,2,3})  不可变集合     round(四舍五入)
    globals()查看全局               locals()查看局部
    __import__(‘module’)可以用str导入模块
  • 相关阅读:
    GUID
    Castle学习笔记二:框架结构及配置
    Linux编程基础
    Linux文件编程
    单臂路由配置实例
    CCNA学习笔记#02第7章操作与配置Cisco IOS
    Linux基本命令
    Linux系统中rar、unrar命令安装和使用详解
    批处理设置IP与DNS服务器
    Linux下载安装5笔输入法
  • 原文地址:https://www.cnblogs.com/luck-L/p/9184587.html
Copyright © 2011-2022 走看看