1.匿名函数 lambda
lambda 表示的是匿名函数,不需要def 来声明,一句话就可以写出函数
语法:函数名=lambda 参数:返回值
注意:函数的参数可以有多个,用逗号隔开
2.函数不管多复杂,只能写一行
3.返回值和正常函数一样
1 print(func(5)) 2 print(a(6)) 3 print(b(4)) 4 print(func.__name__) 5 print(a.__name__) 6 print(b.__name__)#查看函数的名字
1 a= lambda a,b: max(a,b)#判断大小 2 3 b=lambda a,b:a if a>b else b 4 print(b(1,2))#判断大小
1 f=lambda a,b:(a,b)#这里需要括起来,因为若不括上,会默认去前一个,b没有返回值 2 print(f(1,2))
2.sorted()排序函数
语法:sorted(Iterable,key=None,reverse=False)
Iterable:可迭代对象
key:排序规则,在sorted内部会将迭代对象每一个元素传递给函数的参数,根据函数运算
reverse:是否倒序 True:倒叙 ,False:正序
1 lst=[1,2,8,5,3,6] 2 lst2=sorted(lst)#sorted()可以对新列表排序 3 print(lst2)
1 dic={1:"a",2:"b",3:"c"}#如果是字典,返回的是排序过后的key 2 print(sorted(dic))
1 lst=["麻花","奥术大师","啊发发","大发发去安抚"] 2 def func(s): 3 return len(s) 4 print(sorted(lst,key=func,reverse=True))#这里sorted() 里面的 5 先是可迭代的对象,然后在keysorted()内部会将可迭代对象的每一个元素传递给 6 函数的参数,默认正序
1 print(sorted(lst,key(排序函数)=lambda s:len(s) )) 2 lst=[{"id":1,"name":"自治区","age":18}, 3 # {"id":2,"name":"自治","age":199}, 4 # {"id":3,"name":"自","age":8} 5 # ] 6 # print(sorted(lst,key=lambda e:e["age"]))#虽然里面是字典,但是总体来说是 7 一个列表,所以key排序函数会自动排序
3.filter() 筛选函数
语法:filter(function,Iterable)
function:用来筛选的函数,filter会把语速传递给函数,然后根据函数返回的Ture或False来保留此项数据
Iterable:可迭代的对象
1 lst=[1,2,3,4,56,7,9] 2 li=filter(lambda x:x%2==0,lst) 3 print(li)#这里输出的是一个内存地址 4 print(list(li))
1 lst=[{"id":1,"name":"自治区","age":18}, 2 {"id":2,"name":"自治","age":199}, 3 {"id":3,"name":"自","age":8} 4 ] 5 li=filter(lambda e:e["age"]>16,lst) 6 print(list(li))
4.map 映射函数
语法:map(function,iterable) 对可以迭代的对象的每一个元素进行映射,分别执行function
1 map(1."可以迭代对象每一个元素进行映射,分别执行函数") 2 def func(e): 3 return e*e 4 mp=map(func,[1,2,3,4,6]) 5 print(mp)#同样返回的是地址 6 print(list(mp))#这里需要加一个list返回最后的列表
1 # map('可以计算相同位置的和,如果第一项少取,则和zip一样也少取值') 2 # lst1=[1,2,3,4,] 3 # lst2=[2,34,5,6,8] 4 # print(list(map(lambda x,y:x+y,lst2,lst1)))
5.递归函数 (贪吃蛇函数)
在函数中调用本身就是递归函数
1 def func(n): 2 print("n") 3 n+=1 4 func(n) 5 func(1)
1 import os 2 def read(filepath,n): 3 files=os.listdir(filepath) 4 for fi in files: 5 fi_d=os.path.join(filepath,fi) 6 if os.path.isdir(fi_d): 7 print(" "*n,fi) 8 read(fi_d,n+1) 9 else: 10 print(" "*n,fi) 11 read()
上一个是运用递归查找文件