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!!!
浙公网安备 33010602011771号