Python3——匿名函数

没有名字的函数,不用写return,返回值就是该表达式的结果。

语法:lambda 参数:方法(或三元运算)

1lambda x:x*x等同于 2 3def f(x): 4 return x * x 5 6#普通函数 7def calc(x,y): 8 if x > y: 9 return x/y 10 else: 11 return x*y 12 13#匿名函数,想要调用必须赋一个变量 14func = lambda x,y: x/y if x>y else x*y #匿名函数最多只支持三元运算,再复杂的判断不支持 15 16print(calc(3,8)) 17print(calc(16,8)) 18print(func(3,8)) 19print(func(16,8))

 结果:

124 22.0 324 42.0

 上面的例子好像看不出匿名函数和普通函数有什么区别,反而看上去会容易迷糊,那有什么用呢?

有些时候,不需要显式地定义函数,直接传入匿名函数更方便。

以map()函数为例:

现在需要一个列表里的所有元素自乘

1a = list(range(10)) 2print(a) 3 4#普通方法 5for index,i in enumerate(a): 6 a[index] = i*i 7print(a) 8 9#map()方法 10print(list(map(lambda x:x*x,a)))

 结果:

1#普通方法 2[0, 1, 2, 3, 4, 5, 6, 7, 8, 9] 3[0, 1, 4, 9, 16, 25, 36, 49, 64, 81] 4 5#map()方法 6[0, 1, 2, 3, 4, 5, 6, 7, 8, 9] 7[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]

可以看出同一个需求显然用匿名函数更加简洁

PS:map(func, *iterables)函数,第一个参数是个函数,第二个是用来操作的列表等元素集合

总结:

1、匿名函数不需要特意去定义一个函数名,可能这个函数只是某个地方临时用一下,后面就不会再用了

2、匿名函数一般都是和其他方法搭配使用,使得代码更加简洁

点赞
收藏

评论区

加载中...

相关推荐

MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1

文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

MySQL部分从库上面因为大量的临时表tmp_table造成慢查询

背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_

皕杰报表之UUID

​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

Python3:sqlalchemy对mysql数据库操作,非sql语句

Python3:sqlalchemy对mysql数据库操作,非sql语句python3authorlizmdatetime2018020110:00:00coding:utf8'''