• 内置函数与匿名函数及递归


    一 . 内置函数

        内置函数就是python内部给我们编写好的函数,我们可以直接拿来用

      1.几个比较关键的内置函数:

        (1).zip()

    #无论是L1多还是L2多,都返回到最短的那个截至
    L1=[1,2,3,4]
    L2=['a','b','c']
    
    ret=zip(L1,L2)
    for i in ret:
        print(i)
    
    # (1, 'a')
    # (2, 'b')
    # (3, 'c')

        (2).filter()

    def a(x):
        #if x%2==1:
        #   return True
        return x%2==1
    
    ret=filter(a,(1,2,3,4,5))            #filter(函数名,参数)把为真的值返回
    print(ret)
    for i in ret:
        print (i)
    
    #上面代码可以使用下面方式表达
    for i in range(1,6): if i %2==1: print(i)

    #练习,输出1-100中平方根是整数的数
    import math
    def a(x):
        if math.sqrt(x)%1==0:
            return True
    
    ret=filter(a,range(1,101))
    for i in ret:
        print(i)

        (3)map()

    ret=map(abs,(-1,4,5,3,-8))
    for i in ret:
        print(i)
    
    
    # 1
    # 4
    # 5
    # 3
    # 8

           3.sort与sorted

    #sort函数
    l=[3,6,4,1,5]
    l.sort()
    print(l)
    
    #结果:[1,3,4,5,6]
    
    
    #sorted函数
    
    l=[3,6,4,1,5]
    a=sorted(l)
    print(a)
    
    #结果:[1,3,4,5,6]

     二.匿名函数

      匿名函数结构:

        函数名 = lambda 参数 :返回值

      匿名函数特点:

        可以将函用一句话表示出来,简化代码

      实例1:

    #普通函数
    def func(x,y):
        if x>y:
            print(x)
        else:
            print(y)
    func(1,3)
    
    
    #匿名函数
    
    a=lambda x,y:x if x>y else y
    print(a(1,3))

          匿名函数面试题

           

    #面试题1:
    d=lambda x:x*2
    t=lambda x:x*3
    x=2
    x=d(x)
    x=t(x)
    x=d(x)
    print(x)
    
    
    
    #结果:24
    #面试题2
    #把('a','b'),('c','d')利用匿名函数转化为[{'a','c'},{'b','d'}]
    a1=('a','b')
    a2=('c','d')
    # def func(tup):
    #     return {tup[0],tup[1]}
    
    ret=zip(a1,a2)
    rep=map(lambda tup:{tup[0],tup[1]},ret)
    print(list(rep))
    
    
     

      三.递归函数

    #阶乘
    def a(n):
        if n==1:
            return 1
        else:
            return a(n-1)*n
    
    print(a(5))
    #斐波那契
    def a(n):
        if n==1:
            return 0
        elif n==2:
            return 1
        else:
            return a(n-1)+a(n-2)
    
    print(a(30))
    #经典二分查找
    def find(l,aim,start=0,end=None):
        end=len(l) if end is None else end
        midle_num=(start+end)//2
        if start<=end:
            if aim<l[midle_num]:
                return find(l,aim,start=start,end=midle_num-1)
            elif aim>l[midle_num]:
                return find(l,aim,start=midle_num+1,end=end)
            else:
                return midle_num
        else:
            return "can't find it"
    l=[1,3,6,9,24,35,67]
    print(find(l,6))
  • 相关阅读:
    Unity shader with lightmap
    清理数据库日志
    Sqlserver数据库还原一直显示“正在还原…”解决方法
    如何查看 SQL Server 执行的历史 SQL 语句记录?
    MYSQL 命令行大全 (简洁、明了、全面)
    C#Datatable导入sqlserver数据库中,三种常见,快捷的方法
    MongoDB下载页面
    等级保护和分级保护区别与联系
    等级保护和分级保护
    SQL2005EXPress自动备份
  • 原文地址:https://www.cnblogs.com/wm0217/p/10805431.html
Copyright © 2020-2023  润新知