匿名,排序,过滤,映射,递归函数

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

上一个是运用递归查找文件

原文地址:https://www.cnblogs.com/zhangqing979797/p/9483741.html