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 相关文章推荐
开始着手第一个Django项目
Jul 15 Python
浅谈python中列表、字符串、字典的常用操作
Sep 19 Python
Python基于高斯消元法计算线性方程组示例
Jan 17 Python
在cmd中运行.py文件: python的操作步骤
May 12 Python
python 反向输出字符串的方法
Jul 16 Python
在Python中如何传递任意数量的实参的示例代码
Mar 21 Python
PyTorch中permute的用法详解
Dec 30 Python
tensorflow模型转ncnn的操作方式
May 25 Python
运行Python编写的程序方法实例
Oct 21 Python
python 带时区的日期格式化操作
Oct 23 Python
python基于opencv 实现图像时钟
Jan 04 Python
Django中的DateTimeField和DateField实现
Feb 24 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
操作Oracle的php类
2006/10/09 PHP
PHP获得用户使用的代理服务器ip即真实ip
2006/12/31 PHP
ThinkPHP3.1查询语言详解
2014/06/19 PHP
php简单定时执行任务的实现方法
2015/02/23 PHP
PHP性能优化大全(php.ini)
2016/05/20 PHP
详解PHP版本兼容之openssl调用参数
2018/07/25 PHP
Laravel6.2中用于用户登录的新密码确认流程详解
2019/10/16 PHP
js 中{},[]中括号,大括号使用详解
2011/05/12 Javascript
JS二维数组的定义说明
2014/03/03 Javascript
深入理解JavaScript系列(43):设计模式之状态模式详解
2015/03/04 Javascript
JavaScript实现的encode64加密算法实例分析
2015/04/15 Javascript
简述JavaScript的正则表达式中test()方法的使用
2015/06/16 Javascript
js模仿java的Map集合详解
2016/01/06 Javascript
jQuery插件zTree实现的基本树与节点获取操作示例
2017/03/08 Javascript
Vue2.0+ElementUI实现表格翻页的实例
2017/10/23 Javascript
jackson解析json字符串,首字母大写会自动转为小写的方法
2017/12/22 Javascript
使用 vue 实现灭霸打响指英雄消失的效果附demo
2019/05/06 Javascript
layui table 多行删除(id获取)的方法
2019/09/12 Javascript
webpack4 配置 ssr 环境遇到“document is not defined”
2019/10/24 Javascript
TypeScript 引用资源文件后提示找不到的异常处理技巧
2020/07/15 Javascript
使用Typescript开发微信小程序的步骤详解
2021/01/12 Javascript
python使用PyGame播放Midi和Mp3文件的方法
2015/04/24 Python
Python获取linux主机ip的简单实现方法
2016/04/18 Python
Python实现GUI学生信息管理系统
2020/04/05 Python
查看django版本的方法分享
2018/05/14 Python
Python RabbitMQ消息队列实现rpc
2018/05/30 Python
Python import与from import使用及区别介绍
2018/09/06 Python
如何在Python中实现goto语句的方法
2019/05/18 Python
解析HTML5中的新功能本地存储localStorage
2016/03/01 HTML / CSS
澳大利亚在线百货商店:Real Smart
2017/08/13 全球购物
美国睫毛、眉毛精华液领导品牌:RevitaLash Cosmetics
2018/03/26 全球购物
同志主要表现材料
2014/08/21 职场文书
生活小常识广播稿
2014/09/16 职场文书
校长新学期致辞
2015/07/30 职场文书
Python面向对象编程之类的概念
2021/11/01 Python
关于EntityWrapper的in用法
2022/03/22 Java/Android