Python3.x基础学习-函数用法(三)
前言:
在定义函数的时候,不想给函数起一个名字。这个时候就可以用 lambda 来定义 一个匿名函数
使用方法:
语法:变量名= lambda 参数:表达式
注意:
1.表达式中不能包含 循环,retu
2.可以包含 if...else...语句.
3.表达式计算的结果直接返回"""
#1.创建匿名函数,无参数x = lambda :3<2print(x)# <function <lambda> at 0x00000153EA9E2EA0>print(x())# False#2.传递多个参数#计算两个参数的和ret = lambda x,y:x+yprint(ret(5,10))# 15#返回参数中较小的那个数# def func(x,y):# if x<y:# retu x# else:# retu y# print(func(3, 5))#改为匿名函数ret = lambda x,y:x if x<y else yprint(ret(1,2))# 1#使用max()函数求字典的最大值dic = {'k1':10,'k2':30,'k3':20}# def func(k):# retu 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 = 4def action(n):print(x**n)retu action #返回的是函数的引用,并没有调用函数ret = func() #此时ret是函数action的引用ret(2)# 16# 将action改为匿名函数def func():x=4retu lambda n:x**nprint(func()(2))#传递默认参数def func():x = 4def action(n,x1=x):print(x1**n)retu action #返回的是函数的引用,并没有调用函数ret = func() #此时ret是函数action的引用ret(2)# 16def func():x=4retu lambda n,x1=x:x1**nprint(func()(2))# 16def makeAction():acts=[]for i in range(5):acts.append(lambda x:i**x)retu actsx = makeAction()print(x[4](3))# 64
作者:Johnsonbug
来源链接:https://www.cnblogs.com/johnsonbug/p/12701447.html
版权声明:
1、JavaClub(https://www.javaclub.cn)以学习交流为目的,由作者投稿、网友推荐和小编整理收藏优秀的IT技术及相关内容,包括但不限于文字、图片、音频、视频、软件、程序等,其均来自互联网,本站不享有版权,版权归原作者所有。
2、本站提供的内容仅用于个人学习、研究或欣赏,以及其他非商业性或非盈利性用途,但同时应遵守著作权法及其他相关法律的规定,不得侵犯相关权利人及本网站的合法权利。
3、本网站内容原作者如不愿意在本网站刊登内容,请及时通知本站(javaclubcn@163.com),我们将第一时间核实后及时予以删除。