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实现在Linux系统下更改当前进程运行用户
Feb 04 Python
使用graphics.py实现2048小游戏
Mar 10 Python
用Python下载一个网页保存为本地的HTML文件实例
May 21 Python
Python日志模块logging基本用法分析
Aug 23 Python
浅述python2与python3的简单区别
Sep 19 Python
PyQt5内嵌浏览器注入JavaScript脚本实现自动化操作的代码实例
Feb 13 Python
Python数据可视化:幂律分布实例详解
Dec 07 Python
python通过移动端访问查看电脑界面
Jan 06 Python
Django 博客实现简单的全文搜索的示例代码
Feb 17 Python
解决pycharm每次打开项目都需要配置解释器和安装库问题
Feb 26 Python
Python数组拼接np.concatenate实现过程
Apr 18 Python
Python pip install如何修改默认下载路径
Apr 29 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
PHP 简单日历实现代码
2009/10/28 PHP
PHP 程序员应该使用的10个组件
2009/10/31 PHP
php获取四位字母和数字的随机数的实现方法
2015/01/09 PHP
Yii2搭建后台并实现rbac权限控制完整实例教程
2016/04/28 PHP
Smarty保留变量用法分析
2016/05/23 PHP
php并发加锁示例
2016/10/17 PHP
swoole和websocket简单聊天室开发
2017/11/18 PHP
微信公众平台开发教程②微信端分享功能图文详解
2019/04/10 PHP
laravel Validator ajax返回错误信息的方法
2019/09/29 PHP
小议Javascript中的this指针
2010/03/18 Javascript
轻量级的原生js日历插件calendar.js使用指南
2015/04/28 Javascript
javascript为按钮注册回车事件(设置默认按钮)的方法
2015/05/09 Javascript
JavaScript淡入淡出渐变简单实例
2015/08/06 Javascript
基于javascript实现简单计算器功能
2016/01/03 Javascript
JavaScript判断DIV内容是否为空的方法
2016/01/29 Javascript
详解JSON1:使用TSQL查询数据和更新JSON数据
2016/11/21 Javascript
在 Angular 中使用Chart.js 和 ng2-charts的示例代码
2017/08/17 Javascript
简述pm2常用命令集合及配置文件说明
2019/05/30 Javascript
浅谈React中组件逻辑复用的那些事儿
2020/05/21 Javascript
[13:18]《一刀刀一天》之DOTA全时刻21:详解TI新赛制 A队再露獠牙
2014/06/24 DOTA
[02:50]【扭转乾坤,只此一招】DOTA2全新版本永雾林渊开启新篇章
2020/12/24 DOTA
python发送多人邮件没有展示收件人问题的解决方法
2019/06/21 Python
详解基于python-django框架的支付宝支付案例
2019/09/23 Python
美国顶尖折扣时尚购物网:Bluefly
2016/08/28 全球购物
澳大利亚领先的在线葡萄酒零售商:Get Wines Direct
2018/03/27 全球购物
台湾演唱会订票网站:StubHub台湾
2019/06/11 全球购物
会计系毕业个人自荐信格式
2013/09/23 职场文书
测试工程师岗位职责
2013/11/28 职场文书
求职自荐信范文格式
2013/11/29 职场文书
预备党员思想汇报
2014/01/08 职场文书
行政助理工作职责范本
2014/03/04 职场文书
访谈节目策划方案
2014/05/15 职场文书
2015年六年级班主任工作总结
2015/10/15 职场文书
Nginx同一个域名配置多个项目的实现方法
2021/03/31 Servers
python 统计代码耗时的几种方法分享
2021/04/02 Python
 python中的元类metaclass详情
2022/05/30 Python