1、匿名函数
格式:lambda 参数:表达式(f返回值)
实际应用:一般用来定义在表达式简单的函数,使用匿名函数可以简化代码,像与map、filter等函数的使用
例子:
#普通函数 def func(x): return x*2 #匿名函数 lambda x:x*2
#多个参数的匿名函数
lambda x,y:x+y
#没有参数的匿名函数
res=lambda :100
print(res())
#100
匿名函数的应用:
# 问题需求一:对下面的列表进行排序(规则:根据列表中每个元素的第二个值的大小进行排序) li = [[1, 10, 32], [3, 22, 99], [2, 7, 77]] li.sort(key=lambda x:x[1]) print(li) #[[2, 7, 77], [1, 10, 32], [3, 22, 99]] # 问题需求二:对下面的列表进行排序(规则:根据元素的name字段的值的大小进行排序) li2 = [{'id': 1, "name": 100}, {'id': 7, "name": 9}, {'id': 3, "name": 1}] li2.sort(key=lambda x:x["name"]) print(li2) #[{'id': 3, 'name': 1}, {'id': 7, 'name': 9}, {'id': 1, 'name': 100}]
2、内置函数
exec: 执行python代码
code=""" print(666) """ exec(code) #输出666
map函数:将函数应用于iterable中每一项并输出期结果
map(参数1:处理函数,参数2:可迭代对象)
li = [11, 33, 34, 55, 7, 2, 7, 66, 899, 7, 5] print(list(map(lambda x:x*2,li))) #输出 [22, 66, 68, 110, 14, 4, 14, 132, 1798, 14, 10]
filter函数:过滤器
filter(参数1:过滤规则函数,可迭代对象)
li = [11, 33, 34, 55, 7, 2, 7, 66, 899, 7, 5] print(list(filter(lambda x:x>100,li))) #输出[899]
all: 迭代对象内所有的元素为真,返回True
a=100 b=100 if (a and b)>50: print("zhen") #输出 zhen if all([a>50,b>50]): print("真") #输出 真
any: 迭代对象内只要有一个元素为真,返回True
a=100 b=10 if (a or b)>50: print("zhen") #输出 zhen if any([a>50,b>50]): print("真") #输出 真
zip函数:聚合打包
a=[1,2,3,4]
b=[7,8,9]
print(dict(zip(a,b)))
#输出 {1: 7, 2: 8, 3: 9}
a1=[1,2,3,4]
b1=[7,8,9]
c1=[11,22,33]
print(list(zip(a1,b1,c1)))
#输出 [(1, 7, 11), (2, 8, 22), (3, 9, 33)]
3、闭包函数
实现一个闭包函数,须满足如下条件:
1)函数中嵌套一个函数
2)外层函数返回内层函数的变量名
3)内层函数对外部作用域有一个非全局的变量进行引用
例子:
def fun(): a=1 def func(): return a+1 return func
闭包函数=函数+保存引用数据的封闭作用域