python匿名函数的使用方法解析


Posted in Python onOctober 10, 2019

一、lambda关键字的使用方法

func=lambda x:x+1
print(func(1))
#2
print(func(2))
#3

#以上lambda等同于以下函数
def func(x):
  return(x+1)

注释:可以这样认为,lambda作为一个表达式,定义了一个匿名函数,上例的代码x为入口参数,x+1为函数体。在这里lambda简化了函数定义的书写形式。是代码更为简洁,但是使用函数的定义方式更为直观,易理解。

二、Python中,也有几个定义好的全局函数方便使用的,filter, map, reduce。

filter(function, sequence):对sequence中的item依次执行function(item),将执行结果为True的item组成一个List/String/Tuple(取决于sequence的类型)。

filter(function or None, sequence) -> list, tuple, or string:入参为函数和列表/元组/字符串,返回值为item列表/元组/字符串。

map(function, sequence) :对sequence中的item依次执行function(item),将执行结果function(item)组成一个List返回。

map(function, sequence[, sequence, ...]) -> list:入参是为函数和列表/元组/字符串,返回值为function(item)列表。

reduce(function, sequence, starting_value):对sequence中的item顺序迭代调用function,如果有starting_value,还可以作为初始值调用。function接收的参数个数只能为2,先把sequence中第一个值和第二个值当参数传给function,再把function的返回值和第三个值当参数传给function,然后只返回一个结果。

reduce(function, sequence[, initial]) -> value:入参是为函数和列表/元组/字符串和初始值,返回值为数值。

from functools import reduce 
 foo = [2, 18, 9, 22, 17, 24, 8, 12, 27]
 
 print (list(filter(lambda x: x % 3 == 0, foo)))
 #[18, 9, 24, 12, 27]
 
 print (list(map(lambda x: x * 2 + 10, foo)))
 #[14, 46, 28, 54, 44, 58, 26, 34, 64]
 print (reduce(lambda x, y: x + y, foo))
#139
#1.lambda用法,冒号之前的是入参,冒号之后的是表达式,返回的值,最简单的函数
print [(lambda x:x*x)(x)for x in range(11)]
#结果:[0, 1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
print (lambda x:x*x)(3)
#结果:9
g=lambda x:x*x
print g(4)
#结果:16

#2.filter用法:返回执行结果为TRUE的入参(入参是列表字符元组)
print filter(lambda x:x*x-4,range(10))
#结果:[0, 1, 3, 4, 5, 6, 7, 8, 9]

#3.map的用法:对列表入参依次执行函数。入参为列表,有多少个列表,就应该有多少个入参。
print map(lambda x:x*x-4,range(10))
#结果:[-4, -3, 0, 5, 12, 21, 32, 45, 60, 77]
print map(lambda x,y:x*y-4,range(3),[8,9,10])
#结果:[-4, 5, 16]

#4.reduce用法:先把sequence中第一个值和第二个值当参数传给function,再把function的返回值和第三个值当参数传给fuction,最终返回一个结果值
#接收的入参个数只能为2
print reduce(lambda x,y:x*y-4,range(4))
#结果:-40
#计算0到100的和
print reduce(lambda x,y:x+y, range(101))
#结果:5050
print reduce(lambda x,y:x+y, range(101),100)
#结果:5150

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
布同 Python中文问题解决方法(总结了多位前人经验,初学者必看)
Mar 13 Python
零基础写python爬虫之HTTP异常处理
Nov 05 Python
python开发环境PyScripter中文乱码问题解决方案
Sep 11 Python
python中Pycharm 输出中文或打印中文乱码现象的解决办法
Jun 16 Python
Python入门之三角函数sin()函数实例详解
Nov 08 Python
将string类型的数据类型转换为spark rdd时报错的解决方法
Feb 18 Python
对Python协程之异步同步的区别详解
Feb 19 Python
Django获取应用下的所有models的例子
Aug 30 Python
python导入库的具体方法
Jun 18 Python
Java byte数组操纵方式代码实例解析
Jul 22 Python
教你使用TensorFlow2识别验证码
Jun 11 Python
python中Pyqt5使用Qlabel标签播放视频
Apr 22 Python
Python切图九宫格的实现方法
Oct 10 #Python
python 3.7.4 安装 opencv的教程
Oct 10 #Python
Django实现auth模块下的登录注册与注销功能
Oct 10 #Python
导入tensorflow时报错:cannot import name 'abs'的解决
Oct 10 #Python
关于pycharm中pip版本10.0无法使用的解决办法
Oct 10 #Python
超实用的 30 段 Python 案例
Oct 10 #Python
使用浏览器访问python写的服务器程序
Oct 10 #Python
You might like
dede全站URL静态化改造[070414更正]
2007/04/17 PHP
php处理restful请求的路由类分享
2014/02/27 PHP
php通过字符串调用函数示例
2014/03/02 PHP
php获取twitter最新消息的方法
2015/04/14 PHP
PHP程序员的技术成长规划
2016/03/25 PHP
thinkphp 字母函数详解T/I/N/D/M/A/R/U
2017/04/03 PHP
PHP实现登陆并抓取微信列表中最新一组微信消息的方法
2017/07/10 PHP
PHP实现表单提交数据的验证处理功能【防SQL注入和XSS攻击等】
2017/07/21 PHP
Javascript attachEvent传递参数的办法
2009/12/14 Javascript
jQuery 定时局部刷新(setInterval)
2010/11/19 Javascript
nodejs分页类代码分享
2014/06/17 NodeJs
IE中JS跳转丢失referrer问题的2个解决方法
2014/07/18 Javascript
AngularJS快速入门
2015/04/02 Javascript
jQuery控制frames及frame页面JS的方法
2016/03/08 Javascript
Node.js+Express配置入门教程详解
2016/05/19 Javascript
jQuery动态创建元素以及追加节点的实现方法
2016/10/20 Javascript
Vue.js第四天学习笔记(组件)
2016/12/02 Javascript
EasyUI Datebox 日期验证之开始日期小于结束时间
2017/05/19 Javascript
详解vue组件通信的三种方式
2017/06/30 Javascript
javascript 中事件冒泡和事件捕获机制的详解
2017/09/01 Javascript
获取layer.open弹出层的返回值方法
2018/08/20 Javascript
jQuery实现基本淡入淡出效果的方法详解
2018/09/05 jQuery
js实现删除json中指定的元素
2020/09/22 Javascript
如何使用gpu.js改善JavaScript的性能
2020/12/01 Javascript
Python zip()函数用法实例分析
2018/03/17 Python
python flask 如何修改默认端口号的方法步骤
2019/07/12 Python
Django项目uwsgi+Nginx保姆级部署教程实现
2020/04/19 Python
详解用 python-docx 创建浮动图片
2021/01/24 Python
Linux内核的同步机制是什么?主要有哪几种内核锁
2016/07/11 面试题
Linux上比较文件的命令都有哪些
2012/02/24 面试题
酒店总经理岗位职责范本
2014/08/08 职场文书
2014年预备党员端正入党动机思想汇报
2014/09/13 职场文书
离婚协议书标准格式
2014/10/04 职场文书
2015年财政局工作总结
2015/05/21 职场文书
焦裕禄纪念馆观后感
2015/06/09 职场文书
Minikube搭建Kubernetes集群
2022/03/31 Servers