Python Lambda函数使用总结详解


Posted in Python onDecember 11, 2019

这篇文章主要介绍了Python Lambda函数使用总结详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

lambda表达式是一种匿名函数,对应python中的自定义函数def,是定义某个函数时比较高级的一种写法。作为python初学者,本文整理了lambda的一些基本用法和特点。

lambda和def的对应关系

定义func函数,计算给定数x的平方

def func(x):
return x*x

等价于

func = lambda x: x*x

其中func是函数名,x是输入参数,x*x是输出结果

输入参数可以有多个,可以接收不定参数如*args或者**kwargs。

f = lambda x, *args, para, **kwargs : [args, para, kwargs]
f(1, 2, 3, para='number', name='Jack', sex='male')
# 输出 [(2, 3), 'number', {'name': 'Jack', 'sex': 'male'}]

有时也可以不指定输入参数,如:

lambda: random.randn()

lambda与map(), filter(), reduce()

lambda表达式返回一个函数,这个函数可以作为其他函数的参数。常用的可以与lambda组合的内置函数有map(), filter(), reduce().

在处理一个可迭代对象如列表,字典等时,可以用map(lambda, x) 代替 for...in...循环,如:

lst = [1, 2, 3, 4, 5]
res = []
for i in lst:
  a = i*i
  res.append(a)

等价于

res = list(map(lambda x:x*x, lst))

可以看到这里的lambda生成的函数直接作为map函数的function参数,对列表的每一个元素进行平方计算

同理可以将lambda用于filter进行筛选,或者reduce累积运算:

from functools import reducelst = [1, 2, 3, 4, 5]f_res = filter(lambda x: x>3, lst)
r_res = reduce(lambda x, y: x*y, lst)

print('大于3的数字有:', list(f_res)) 
print('累乘结果为:', r_res)

输出结果:

大于3的数字有: [4, 5]
累乘结果为: 120

lambda与if条件判断

lambda表达式中可以插入if...else进行条件判断,如

f = lambda x: 'even' if x%2==0 else 'odd'
# f(3)输出结果 odd

等价于

def f(x):<br data-filtered="filtered">if x%2==0:<br data-filtered="filtered">

return 'even'<br data-filtered="filtered">
else:<br data-filtered="filtered">

return 'odd'

注意如果在lambda中使用if进行条件判断,则else是必须声明的,否则会引起报错。如果不返回结果可以用 else None 表示。

if...elif...else的多条件判断也可以用于lambda,但会使得代码过于复杂,所以不推荐。

lambda在pandas中的使用

lambda函数常用于DataFrame或者Series对象下的map、apply、transform方法

import pandas as pd
df = pd.DataFrame({'Age': [22, 21, 22, 21, 20], 'Score': [87, 66, 79, 54, 59]})
df['Pass'] = df.apply(lambda x: 'pass' if x[1]>=60 else 'Not pass', axis=1)

输出新列 'Pass',根据成绩判断通过与否,输出df后结果为:

Age Score  Pass
0  22 87 pass
1  21 66 pass
2  22 79 pass
3  21 54 Not pass
4  20 59 Not pass

x为DataFrame对象,当参数axis=1时,x[1]等于第二列。

当用于Series对象时,以上代码等价于:

df['Pass'] = df['Score'].apply(lambda x: 'pass' if x>60 else 'Not pass')

在pandas中,通过apply,map, transform方法,lambda可以直接应用于Series级别的运算。

当使用applymap方法时,lambda可以应用于DataFrame级别的运算。

lamda的优缺点

lambda的优点:

  • 不需要定义函数名(匿名函数)
  • 代码简洁美观
  • 适用于定义简单的计算

lambda的缺点:

  • 只有一个运算式,不适用于复杂的计算
  • 不够直观,难于理解,增加了维护成本

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

Python 相关文章推荐
在Python中使用正则表达式的方法
Aug 13 Python
Python中绑定与未绑定的类方法用法分析
Apr 29 Python
利用Python爬取微博数据生成词云图片实例代码
Aug 31 Python
python实现数据预处理之填充缺失值的示例
Dec 22 Python
Python匿名函数及应用示例
Apr 09 Python
python 函数中的内置函数及用法详解
Jul 02 Python
django云端留言板实例详解
Jul 22 Python
Python Selenium截图功能实现代码
Apr 26 Python
在Keras中CNN联合LSTM进行分类实例
Jun 29 Python
Python 保存加载mat格式文件的示例代码
Aug 04 Python
selenium3.0+python之环境搭建的方法步骤
Feb 01 Python
Python turtle实现贪吃蛇游戏
Jun 18 Python
Python迭代器模块itertools使用原理解析
Dec 11 #Python
Python+Selenium+phantomjs实现网页模拟登录和截图功能(windows环境)
Dec 11 #Python
Python partial函数原理及用法解析
Dec 11 #Python
opencv3/python 鼠标响应操作详解
Dec 11 #Python
通过实例简单了解Python中yield的作用
Dec 11 #Python
opencv3/Python 稠密光流calcOpticalFlowFarneback详解
Dec 11 #Python
centos7中安装python3.6.4的教程
Dec 11 #Python
You might like
Get或Post提交值的非法数据处理
2006/10/09 PHP
自己写的php curl库实现整站克隆功能
2015/02/12 PHP
php通过baihui网API实现读取word文档并展示
2015/06/22 PHP
几行代码轻松实现PHP文件打包下载zip
2017/03/01 PHP
索趣科技的答案
2007/02/07 Javascript
利用Dojo和JSON建立无限级AJAX动态加载的功能模块树
2007/03/24 Javascript
flexigrid 类似ext grid的JS表格代码
2010/07/17 Javascript
悄悄用脚本检查你访问过哪些网站的代码
2010/12/04 Javascript
select、radio表单回显功能实现避免使用jquery载入赋值
2013/06/08 Javascript
JS 精确统计网站访问量的实例代码
2013/07/05 Javascript
JQuery的ready函数与JS的onload的区别详解
2013/11/21 Javascript
JavaScript遍历table表格中的某行某列并打印其值
2014/07/08 Javascript
基于JavaScript实现滑动门效果
2017/03/16 Javascript
实例详解display:none与visible:hidden的区别
2017/03/30 Javascript
Vue2.0 slot分发内容与props验证的方法
2017/12/12 Javascript
angularJs select绑定的model取不到值的解决方法
2018/10/08 Javascript
js实现3D照片墙效果
2019/10/28 Javascript
Vue的transition-group与Virtual Dom Diff算法的使用
2019/12/09 Javascript
Python使用cookielib模块操作cookie的实例教程
2016/07/12 Python
python批量修改文件夹及其子文件夹下的文件内容
2019/03/15 Python
python用quad、dblquad实现一维二维积分的实例详解
2019/11/20 Python
python 实现Flask中返回图片流给前端展示
2020/01/09 Python
Pytorch转keras的有效方法,以FlowNet为例讲解
2020/05/26 Python
Keras 数据增强ImageDataGenerator多输入多输出实例
2020/07/03 Python
纯CSS3实现表单验证效果(非常不错)
2017/01/18 HTML / CSS
HTML5 canvas基本绘图之绘制五角星
2016/06/27 HTML / CSS
加拿大约会网站:EliteSingles.ca
2018/01/12 全球购物
李维斯牛仔裤荷兰官方网站:Levi’s NL
2020/08/23 全球购物
介绍一下Python下range()函数的用法
2013/11/07 面试题
新年爱情寄语
2014/04/08 职场文书
领导班子四风问题个人对照检查材料
2014/10/04 职场文书
教师师德表现自我评价
2015/03/05 职场文书
2015年发展党员工作总结报告
2015/03/31 职场文书
2015年妇幼卫生工作总结
2015/05/23 职场文书
十大动画制作软件,Adobe产品上榜两款,第一是行业标准软件
2022/03/18 杂记
Linux中sftp常用命令整理
2022/06/28 Servers