• python插入排序,冒泡法,函数练习,参数解构,高阶函数 lambda函数,map函数,filter函数


    增加一个哨兵位,每轮和哨兵位进行比较。

    a=[3,0,1,0]
    a.insert(0,0)
    for i in range(len(a)):#0,
        for j in range(1,i):
            a[0]=a[i]#2,1;0
            if a[0]<a[j]:
                a[0],a[j]=a[j],a[0]
            a[i]=a[0]#
    print(a)
    

      

    #冒泡法
    a=[2,3,1,8,0]
    for i in range(len(a)):
        swap=False
        for j in range(len(a)-i-1):
            if a[j]>a[j+1]: #将最大数放置在最右边,所以下次循环少最后一位
                a[j],a[j+1]=a[j+1],a[j]
                swap=True
        if not swap:#若是i的某轮未交换,则证明后面是有序的;
            break;
    print(a)
    
    #编写一个函数,能够接受至少2个参数
    def lianxi(x,y,*z):
       print(max(x,y,*z))
       print(min(x,y,*z))
    lianxi(3,2,5,9)
    
    def addd(x,y,*args):
        print(max(args))
        return max(x,y,max(args)),min(x,y,min(args))
    print(addd(3,2,1,8))
    

      

    #输入一个整数,左对齐或右对齐
    def display(n):
        all=" ".join([str(j) for j in range(n,0,-1)])
        for k in range(1,n+1):
            print("{:>{}}".format(" ".join([str(j) for j in range(k,0,-1)]),len(all)))
    display(12)
    # def dayin(n):
    #     if n>0:
    #         for i in range(1,n+1):
    #             strr = ""
    #             for j in range(i,0,-1):
    #                 strr+=str(j)
    #                 strr+=" "
    #             print("{:>60}".format(strr))
    # print(dayin(19))
    
    # def dayin(n):
    #     if n>0:
    #         for i in range(n,0,-1):
    #             strr = ""
    #             for j in range(i,0,-1):
    #                 strr+=str(j)
    #                 strr+=" "
    #             print("{:>100}".format(strr))
    # dayin(19)
    
    def xixi(n):
        a=" ".join([str(j) for j in range(n,0,-1)])
        print(a)
        for i in range(len(a)):
            if a[i]==' ':
                #print(" "*i,a[i+1:])
                print(" "*(i+1)+a[i+1:])
    xixi(12)
    
    def add(x,y):
        return x+y
    t=(4,8)
    print(*t)
    print(add(*t))#参数解构,可迭代对象,元组,列表
    y=[3,8]
    print(add(*y))
    print(*range(1,3))
    print(add(*range(1,3)))
    

     

    def add(x,y):
        return x+y
    d={'x':5,'y':3}
    print(add(**d))
    print(add(**{'x':1,'y':2}))
    

     

    def add(*args):
        result=0
        for i in args:
            result+=i
        return result
    print(add(2,3))
    print(add(*(1,2)))#参数(实参)解构
    print(add(*[2,8]))
    print(add(*range(5)))
    
    #升序
    # list=[2,4,6,4,1]
    # nlist=[2]
    # def xixi(list):
    #     for i in list[1:]:#4,6,4,1
    #         for j in range(len(nlist)-1,-1,-1):#0,1,2,3
    #             if i>=nlist[j]:
    #                 nlist.insert(j+1,i)#[2,4,4,6
    #                 break
    #         else:
    #             nlist.insert(0,i)
    # xixi(list)
    # print(nlist)
    
    #升序或降序
    # a=[3,2,1]
    # for i,y in enumerate(a):
    #     print(i,y)
    a=[3,2,2,4,8,1,5]
    def sort(a,asc=False):
        na=[]
        for i in a:
            for x,y in enumerate(na):
                flag=i<y if asc else i>y
                if flag:#
                    na.insert(x,i)
                    break
                # if not flag:#升序
                #     na.insert(x,i)#[1,2,2,3,4,5,8]
                #     break
            else:
                na.append(i)
        return na
    print(sort(a,True))
    

     

    #升序或降序
    a=[3,2,2,4,8,1,5]
    def sort(a,asc=False):#默认降序
        def compare(a,b):
            return a<b if asc else a>b
        na=[]
        for i in a:
            for x,y in enumerate(na):          
                if compare(i,y):#
                    na.insert(x,i)
                    break          
            else:
                na.append(i)
        return na
    print(sort(a))
    
    a=[3,2,2,4,8,1,5]
    def sort(a,fn=lambda a,b:a>b):
        na=[]
        for i in a:
            for x,y in enumerate(na):          
                if fn(i,y):#
                    na.insert(x,i)
                    break          
            else:
                na.append(i)
        return na
    #print(sort(a))
    print(sort(a,lambda a,b:a<b))
    
    a=[3,2,2,4,8,1,5]
    print(list(map(lambda x:x+1,a)))
    print(list(map(lambda x:(x,x+1),a)))
    

     

    a=[3,2,2,4,8,1,5]
    print(list(filter(lambda x:x>4,a)))
    

     高阶函数

      函数作为返回值,往往会形成闭包

      函数作为参数,应用很广泛。

     

     

      

      

     

      

      

     

     

      

      

      

      

    越努力,越幸运!!! good good study,day day up!!!
  • 相关阅读:
    【干货分享】流程DEMO-制度发文和干部任免
    如何让流程表单禁用选人控件,但可以通过代码赋值?
    让任正非愤怒的到底是华为财管团队还是流程本身?
    品牌营销:不要Beat,要逼格!
    流程再造:以信息化管理解救“中国制造”
    三星Note 7停产,原来是吃了流程的亏
    BAT“搅局”B2B市场,CIO们准备好了吗?
    胡理辉:风电王国里的流程管控人
    周义:建设流程管理系统 我还在不停努力
    步步高彭雄:弄潮“互联网+零售”从端到端流程开始
  • 原文地址:https://www.cnblogs.com/canglongdao/p/13308687.html
Copyright © 2020-2023  润新知