lambda函数:表示匿名函数,不需要def来声明,一句话就能搞定。
语法:函数名=lamda 参数:返回值
求10的10次方 f=lambda n:n**n print(f(10))
注意:
函数名可以是多个,用逗号隔开
匿名函数只能写一行,当逻辑结束之后就直接返回数据。
返回值和正常函数一样,可以是任意数据
返回较大的那个数 user=iambda x,y:max(x,y) print(user(2,1)) 多个数字,返回最大值 user = iambda *args:max(args)
sorted()函数:排序函数
语法:sorte(lterable,key =none ,reverse=False)
lterable:可迭代对象
key:sorted函数内部会把可迭代对象中的每一个元素拿出来交给后面的key
后面的key计算出一个数字. 作为当前这个元素的权重, 整个函数根据权重进行排序
reverse:是否倒序,True,倒序,False正序
lst = [ {'name':"汪峰","age":48}, {"name":"章子怡",'age':38}, {"name":"alex","age":39}, {"name":"wusir","age":32}, {"name":"赵一宁","age":28} ] ll=sorted(lst,key=lambda el :len(el["name "]),reverse=True) print(ll)
filter()筛选函数
语法:filter(function,lterable)
function:用来筛选函数,在filter中,把iterable中的元素传递给function,然后根据function返回的 True或者False来判断是否保留此项数据
iterable:可迭代对对象
# lst = ["张无忌", "张铁林", "赵一宁", "石可心","马大帅"] # f=filter(lambda el:el[0]=!"张",lst) # print('_iter_'in dir(f)) # for el in f : # print(el) 筛选掉姓张的人
lst = [ {"name":"汪峰", "score":48}, {"name":"章子怡", "score":39}, {"name":"赵一宁","score":97}, {"name":"石可心","score":90} ] f = filter(lambda el:el["score"] <60,lst) print(list(f ) ) 筛选掉60分以下的人
map()
映射函数
语法:map(function,iterable)对可迭代对象的每一个元素进行映射,分别取执行function
print(list(map(lambda x:x*x,[1,2,3,4]))) 利用映射函数来求x的x 次幂
算两个相同位置的列表的和 lst=[1,2,3,4,5] lst1=[2,4,6,8,10] print(list(map(lambda x, y: x+y,lst,lst1)))
递归
在函数中调用函数本身,就是递归,相当于贪吃蛇
在python中,递归最深是1000
我们可以利用递归来遍历各种树形结构
遍历一个文件夹
import os#引入模块 def func(wjm): wj=os.listdir(wjm)#打开要打开的文件夹 for el in wj :#拿到这个文件夹的每一个文件 n_f=os.path.join(wjm,el )#获取到路径 if os.path .isdir(n_f):#判断是否是文件夹 print(el)#是文件夹打印问价名 func(n_f) else: print(el )#不是文件,普通文件 func("f:/上课作业视频")
二分法查找
核心:去头去尾取中间
条件:必须是有序的
lst = [22, 33, 44, 55, 66, 77, 88, 99, 101 , 238 , 345 , 456 , 567 , 678 , 789] n=888 zb=0 yb=len(lst)-1 while zb<=yb: zj=(zb+yb)//2 if lst[zj]>n: yb=zj-1 if lst[zj]<n: zb=zj +1 if lst[zj]==n: print("找到了") break else: print("没找到")
用递归来完成二分法 def func(n,zb,yb): if zb<=yb: zj=(zb+yb)//2 if lst[zj]>n: yb=n-1 return (n,zb,yb) if lst[zj]<n: zb=zb+1 return (n,zb,yb) elif n==lst[zj]: print("找到了") return zj else: print("没有这个数") ret=func(99,0,len(lst)-1) print(ret)