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