Python中的lambda和apply结合使用
1、 lambda
lambda原型为:lambda 参数:操作(参数)
lambda函数也叫匿名函数,即没有具体名称的函数,它允许快速定义单行函数,可以用在任何需要函数的地方。这区别于def定义的函数。
lambda与def的区别:
1)def创建的方法是有名称的,而lambda没有。
2)lambda会返回一个函数对象,但这个对象不会赋给一个标识符,而def则会把函数对象赋值给一个变量(函数名)。
3)lambda只是一个表达式,而def则是一个语句。
4)lambda表达式” : “后面,只能有一个表达式,def则可以有多个。
5)像if或for或print等语句不能用于lambda中,def可以。
6)lambda一般用来定义简单的函数,而def可以定义复杂的函数。
#单个参数的:
g = lambda x : x ** 2
print g(3)
"""
9
"""
#多个参数的:
g = lambda x, y, z : (x + y) ** z
print g(1,2,2)
"""
9
"""
2、map函数
map是python内置函数,会根据提供函数对指定的序列做映射。
map()函数的格式是:
map(function,iterable,...)
第一个参数接受一个函数名,后面的参数接受一个或多个可迭代的序列,返回的是一个集合。
把函数依次作用在list中的每一个元素上,得到一个新的list并返回。注意,map不改变原list,而是返回一个新list。
map()函数会将指定的函数依次作用于某个序列的每个元素,并返回一个迭代器对象。
例子1:
del square(x):return x ** 2map(square,[1,2,3,4,5])# 结果如下:
[1,4,9,16,25]
例子2:
map(lambda x, y: x+y,[1,3,5,7,9],[2,4,6,8,10])# 结果如下:
[3,7,11,15,19]
3、apply
Python中apply函数的格式为:apply(func,*args,**kwargs)
当然,func可以是匿名函数。
用途:当一个函数的参数存在于一个元组或者一个字典中时,用来间接的调用这个函数,并将元组或者字典中的参数按照顺序传递给参数
解析:args是一个包含按照函数所需参数传递的位置参数的一个元组,简单来说,假如A函数的函数位置为 A(a=1,b=2),那么这个元组中就必须严格按照这个参数的位置顺序进行传递(a=3,b=4),而不能是(b=4,a=3)这样的顺序。kwargs是一个包含关键字参数的字典,而其中args如果不传递,kwargs需要传递,则必须在args的位置留空。
apply的返回值就是函数func函数的返回值。
def function(a,b): print(a,b) apply(function,('good','better')) apply(function,(2,3+6)) apply(function,('cai','quan')) apply(function,('cai',),{'b':'caiquan'}) apply(function,(),{'a':'caiquan','b':'Tom'})
输出结果:
('good', 'better')
(2, 9)
('cai', 'quan')
('cai', 'caiquan')
('caiquan', 'Tom')
有时候,函数的参数可能是DataFrame中的行或者列。
DataFrame中apply的用法
#函数应用和映射
import numpy as np
import pandas as pd
df=pd.DataFrame(np.random.randn(4,3),columns=list('bde'),index=['utah','ohio','texas','oregon'])
print(df)
"""b d e
utah -0.667969 1.974801 0.738890
ohio -0.896774 -0.790914 0.474183
texas 0.043476 0.890176 -0.662676
oregon 0.701109 -2.238288 -0.154442
"""#将函数应用到由各列或行形成的一维数组上。DataFrame的apply方法可以实现此功能
f=lambda x:x.max()-x.min()
#默认情况下会以列为单位,分别对列应用函数
t1=df.apply(f)
print(t1)
t2=df.apply(f,axis=1)
print(t2)"""
b 1.597883
d 4.213089
e 1.401566
dtype: float64
utah 2.642770
ohio 1.370957
texas 1.552852
oregon 2.939397
dtype: float64
"""#除标量外,传递给apply的函数还可以返回由多个值组成的Series
def f(x):return pd.Series([x.min(),x.max()],index=['min','max'])
t3=df.apply(f)
#从运行的结果可以看出,按列调用的顺序,调用函数运行的结果在右边依次追加
print(t3)"""b d e
min -0.896774 -2.238288 -0.662676
max 0.701109 1.974801 0.738890
"""#元素级的python函数,将函数应用到每一个元素
#将DataFrame中的各个浮点值保留两位小数
f=lambda x: '%.2f'%x
t3=df.applymap(f)
print(t3)
"""b d e
utah -0.67 1.97 0.74
ohio -0.90 -0.79 0.47
texas 0.04 0.89 -0.66
oregon 0.70 -2.24 -0.15
"""#注意,之所以这里用map,是因为Series有一个元素级函数的map方法。而dataframe只有applymap。
t4=df['e'].map(f)
print(t4)"""
utah 0.74
ohio 0.47
texas -0.66
oregon -0.15
"""
参考自:Python中的lambda和apply用法_anshuai_aw1的博客-CSDN博客_apply lambda
Python中的lambda和apply结合使用相关推荐
- Python中的lambda和apply用法
目录 1 lambda 1.1 举最简单的例子 1.2 再举一个普通的例子 2 Apply 2.1 举例 2.2 下面的例子是DataFrame中apply的用法 3 参考文献 1 lambda la ...
- Python中的Lambda表达式
Lambda表达式 (Lambda Expressions) Lambda Expressions are ideally used when we need to do something simp ...
- 关于python中lambda函数的描述_关于Python中的lambda函数
lambda是Python编程语言中使用频率较高的一个关键字.那么,什么是lambda?它有哪些用法?网上的文章汗牛充栋,可是把这个讲透的文章却不多.这里,我们通过阅读各方资料,总结了关于Python ...
- python的objectproperty,python中property(lambda self: object())简单解释,,最后4行lambda
python中property(lambda self: object())简单解释,,最后4行lambda 最后4行lambda.问题是:如何运作?它们的含义和结果是什么?您能否以简单的方式显示该声 ...
- python中的lambda函数用法--无需定义函数名的函数或子程序,避免代码充斥着大量单行函数
匿名函数lambda:是指一类无需定义标识符(函数名)的函数或子程序. lambda 函数可以接收任意多个参数 (包括可选参数) 并且返回单个表达式的值. 要点: lambda 函数不能包含命令 包含 ...
- 关于Python中的lambda,这篇阅读量10万+的文章可能是你见过的最完整的讲解
lambda是Python编程语言中使用频率较高的一个关键字.那么,什么是lambda?它有哪些用法?网上的文章汗牛充栋,可是把这个讲透的文章却不多.这里,我们通过阅读各方资料,总结了关于Python ...
- lambda在python_在Python中使用lambda高效操作列表的教程
介绍 lambda Python用于支持将函数赋值给变量的一个操作符 默认是返回的,所以不用再加return关键字,不然会报错 result = lambda x: x * x result(2) # ...
- 一文让你彻底掌握【Python中的lambda函数】
你应该听说过,应用Python,可以让你处理一天的重复工作量,缩短到几分钟甚至更短.从此解放上班时间,研究更多更有效率的工作方法.进一步提升工作效率,让工作更出彩.这不是广告,这是实锤图片. 本文和你 ...
- python中lambda函数if用法-Python中关于Lambda函数的使用总结
lambda表达式是一种匿名函数,对应python中的自定义函数def,是定义某个函数时比较高级的一种写法.作为python初学者,本文整理了lambda的一些基本用法和特点. lambda和def的 ...
最新文章
- python练习题(python之“求一个数的阶乘并求结果中从后向前数第一个不为0(零)的数” 等)
- 0-1背包使用一维dp数组时为何v要从大到小枚举
- Docker多台宿主机间的容器互联-centos7
- 爱丁堡大学计算机专业alevel,爱丁堡大学alevel要求?
- Analog使用中的一些技巧和总结
- html不读取缓存,如何让前端浏览器不进行缓存
- Scude导入MySQL_FM2017_FMF赛季更新和真实修正数据库[更新至9.9,超过89000个更新]
- Python 告诉你疫情扩散有多可怕
- Nginx编译./configure翻译
- 查看远端的端口是否通畅3个简单实用案例
- 用条件断点寻找E盾的登录、合法、算法和取服务器数据CALL
- 家庭财务管理系统的设计与实现(Java毕业设计-Springboot)
- Gos —— 搭建基础环境
- onlyoffice协同编辑(多人共享编辑)、在线文档编辑,支持word、excel
- 链接标签a去掉下划线
- python学习之打印机
- 推荐一些在线效率工具汇总(数据分析,舆情监测、图片语义识别等)
- CDS View_01
- 服务器阵列工作原理,阵列卡的工作原理
- 100 个手把手、掏心窝子IDEA快捷键从入门到精通教程
热门文章
- spring.mvc.static-path-pattern、spring.resources.static-locations
- 随机抽样java_实现随机抽样【随机数生成问题】
- 分布式锁 哨兵模式_手撕redis分布式锁,隔壁张小帅都看懂了!
- 事务超时时间无效_什么是ZooKeeper?ZooKeeper分布式事务详解
- Linux进阶之路————用户管理
- Spring Boot————Web应用启动时自动执行ApplicationListener用法
- oracle状态blocked,oracle 监听状态为BLOCKED
- oracle数据库有几个服务_oracle数据库可以有几个数据库
- 重定向地址_JavaWeb - Servlet:重定向和转发,状态管理
- linux dev alloc name,深入理解Linux网络技术内幕-设备注册和初始化(二)