Python3.x基础学习-函数用法(三)
前言:
在定义函数的时候,不想给函数起一个名字。这个时候就可以用 lambda 来定义 一个匿名函数
使用方法:
语法:变量名= lambda 参数:表达式
注意:
1.表达式中不能包含 循环,return
2.可以包含 if...else...语句.
3.表达式计算的结果直接返回"""
#1.创建匿名函数,无参数 x = lambda :3<2 print(x) # <function <lambda> at 0x00000153EA9E2EA0> print(x()) # False #2.传递多个参数 #计算两个参数的和 ret = lambda x,y:x+y print(ret(5,10)) # 15 #返回参数中较小的那个数 # def func(x,y): # if x<y: # return x # else: # return y # print(func(3, 5)) #改为匿名函数 ret = lambda x,y:x if x<y else y print(ret(1,2)) # 1 #使用max()函数求字典的最大值 dic = {'k1':10,'k2':30,'k3':20} # def func(k): # return dic[k] # print(max(dic,key=func)) ret = max(dic,key=lambda k:dic[k]) print(ret) # k2 #使用max()函数,找出年龄最大的那组信息 lst = [ [1001,'zs',20], #学号,姓名,年龄 [1002,'ss',25], [1003,'ww',28], ] print(max(lst,key= lambda x:x[:][2])) # [1003, 'ww', 28] #求列表中每个元素的平方值 lst = [1,2,3] lst1 = [1,2,3,4,5,6,7,8] lst2 = [2,3,4,5,6] print(list(map(lambda x:x*x,lst))) # [1, 4, 9] print(list(map(lambda x,y:x*y,lst1,lst2))) # [2, 6, 12, 20, 30] #过滤列表中的所有奇数 lst = [1,2,3,4,0,5,6,7,8,9] print(list(filter(lambda x:x%2==1 ,lst))) # [1, 3, 5, 7, 9] tup1 = ('a','b') tup2 = ('c','d') # #生成[{'a':'c'},{'b':'d'}] #使用zip()变为元组(a,c),(b,d) #定义匿名函数将传递的参数组成字典 #使用map()变为字典 #讲map()对象转化为列表 print(list(zip(tup1,tup2))) # [('a', 'c'), ('b', 'd')] print(list(map(lambda x:{x[0]:x[1]},zip(tup1,tup2)))) # [{'a': 'c'}, {'b': 'd'}] def func(): x = 4 def action(n): print(x**n) return action #返回的是函数的引用,并没有调用函数 ret = func() #此时ret是函数action的引用 ret(2) # 16 # 将action改为匿名函数 def func(): x=4 return lambda n:x**n print(func()(2)) #传递默认参数 def func(): x = 4 def action(n,x1=x): print(x1**n) return action #返回的是函数的引用,并没有调用函数 ret = func() #此时ret是函数action的引用 ret(2) # 16 def func(): x=4 return lambda n,x1=x:x1**n print(func()(2)) # 16 def makeAction(): acts=[] for i in range(5): acts.append(lambda x:i**x) return acts x = makeAction() print(x[4](3)) # 64