Python lambda表达式用法实例分析


Posted in Python onDecember 25, 2018

本文实例讲述了Python lambda表达式用法。分享给大家供大家参考,具体如下:

lambda表达式,通常是在需要一个函数,但是又不想费神去命名一个函数的场合下使用,也就是指匿名函数。

lambda所表示的匿名函数的内容应该是很简单的,如果复杂的话,干脆就重新定义一个函数了,使用lambda就有点过于执拗了。

lambda就是用来定义一个匿名函数的,如果还要给他绑定一个名字的话,就会显得有点画蛇添足,通常是直接使用lambda函数。如下所示:

add = lambda x, y : x+y
add(1,2) # 结果为3

那么到底要如何使用lambda表达式呢?

1、应用在函数式编程中

Python提供了很多函数式编程的特性,如:map、reduce、filter、sorted等这些函数都支持函数作为参数,lambda函数就可以应用在函数式编程中。如下:

# 需求:将列表中的元素按照绝对值大小进行升序排列
list1 = [3,5,-4,-1,0,-2,-6]
sorted(list1, key=lambda x: abs(x))

运行结果:

[0, -1, -2, 3, -4, 5, -6]

当然,也可以如下:

list1 = [3,5,-4,-1,0,-2,-6]
def get_abs(x):
  return abs(x)
sorted(list1,key=get_abs)

只不过这种方式的代码看起来不够Pythonic

2、应用在闭包中

def get_y(a,b):
   return lambda x:ax+b
y1 = get_y(1,1)
y1(1) # 结果为2

当然,也可以用常规函数实现闭包,如下:

def get_y(a,b):
  def func(x):
    return ax+b
  return func
y1 = get_y(1,1)
y1(1) # 结果为2

只不过这种方式显得有点??隆?/p>

那么是不是任何情况下lambda函数都要比常规函数更清晰明了呢?

肯定不是。

Python之禅中有这么一句话:Explicit is better than implicit(明了胜于晦涩),就是说那种方式更清晰就用哪一种方式,不要盲目的都使用lambda表达式。

更多关于Python相关内容可查看本站专题:《Python数据结构与算法教程》、《Python Socket编程技巧总结》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》及《Python入门与进阶经典教程》

希望本文所述对大家Python程序设计有所帮助。

Python 相关文章推荐
python使用Tkinter显示网络图片的方法
Apr 24 Python
Python实现读取文件最后n行的方法
Feb 23 Python
python 通过字符串调用对象属性或方法的实例讲解
Apr 21 Python
使用python存储网页上的图片实例
May 22 Python
PyQt5的PyQtGraph实践系列3之实时数据更新绘制图形
May 13 Python
python 绘制拟合曲线并加指定点标识的实现
Jul 10 Python
Python日志无延迟实时写入的示例
Jul 11 Python
利用python中集合的唯一性实现去重
Feb 11 Python
Django更新models数据库结构步骤
Apr 01 Python
Python如何给你的程序做性能测试
Jul 29 Python
python 通过exifread读取照片信息
Dec 24 Python
python编程简单几行代码实现视频转换Gif示例
Oct 05 Python
Python实现针对json中某个关键字段进行排序操作示例
Dec 25 #Python
浅谈python 读excel数值为浮点型的问题
Dec 25 #Python
对python中xlsx,csv以及json文件的相互转化方法详解
Dec 25 #Python
解决python xlrd无法读取excel文件的问题
Dec 25 #Python
python读取xlsx的方法
Dec 25 #Python
Python 从列表中取值和取索引的方法
Dec 25 #Python
python 遍历列表提取下标和值的实例
Dec 25 #Python
You might like
memcached 和 mysql 主从环境下php开发代码详解
2010/05/16 PHP
PHP时间戳与日期之间转换的实例介绍
2013/04/19 PHP
PHP PDOStatement:bindParam插入数据错误问题分析
2013/11/13 PHP
PHP结合Mysql数据库实现留言板功能
2016/03/04 PHP
php快速排序原理与实现方法分析
2016/05/26 PHP
thinkphp在php7环境下提示Cannot use ‘String’ as class name as it is reserved的解决方法
2016/09/30 PHP
PHP控制反转(IOC)和依赖注入(DI)
2017/03/13 PHP
PHP array_reduce()函数的应用解析
2018/10/28 PHP
javascript之dhDataGrid Ver2.0.0代码
2007/07/01 Javascript
js字符串日期yyyy-MM-dd转化为date示例代码
2014/03/06 Javascript
JavaScript中的迭代器和生成器详解
2014/10/29 Javascript
利用jQuery和CSS将背景图片拉伸
2015/10/16 Javascript
整理Javascript事件响应学习笔记
2015/12/02 Javascript
详解JavaScript中数组和字符串的lastIndexOf()方法使用
2016/03/13 Javascript
jQuery如何防止Ajax重复提交
2016/10/14 Javascript
canvas实现简易的圆环进度条效果
2017/02/28 Javascript
javascript简写常用的12个技巧(可以大大减少你的js代码量)
2020/03/28 Javascript
angular的输入和输出的使用方法
2018/09/22 Javascript
解决IE11 vue +webpack 项目中数据更新后页面没有刷新的问题
2018/09/25 Javascript
ant design vue中表格指定格式渲染方式
2020/10/28 Javascript
python字符串连接方法分析
2016/04/12 Python
PyQt5利用QPainter绘制各种图形的实例
2017/10/19 Python
Python cookbook(数据结构与算法)将名称映射到序列元素中的方法
2018/03/22 Python
Sanic框架应用部署方法详解
2018/07/18 Python
在python中以相同顺序shuffle两个list的方法
2018/12/13 Python
Pycharm 设置默认头的图文教程
2019/01/17 Python
flask开启多线程的具体方法
2020/08/02 Python
CSS3 实现童年的纸飞机
2019/05/05 HTML / CSS
幼儿园教师自我鉴定
2014/03/20 职场文书
献爱心捐款倡议书
2014/05/14 职场文书
留学推荐信英文范文
2015/03/26 职场文书
2015年语言文字工作总结
2015/07/23 职场文书
简短的人生哲理(38句)
2019/08/13 职场文书
mysql外连接与内连接查询的不同之处
2021/06/03 MySQL
Centos系统通过Docker安装并搭建MongoDB数据库
2022/04/12 MongoDB
centos环境下nginx高可用集群的搭建指南
2022/07/23 Servers