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)))

 高阶函数

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

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

 

 

  

  

 

  

  

 

 

  

 

 

 

 

  

  

  

posted on 2020-07-16 20:44  星空6  阅读(191)  评论(0编辑  收藏  举报

导航