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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/567492.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

软件开发报价模板_定制开发小程序和行业通用(模板)小程序的利弊分析

最近很多掌客多客户来咨询,纠结到底是定制开发小程序还是买个模板通用小程序好,其实在回答这个问题之前,我们先要搞明白什么是定制开发小程序,什么是模板通用小程序,最后再问问自己的搞小程序的目的是什么?…

BatchNorm中forward未被调用原因

1.nn.Module类理解 pytorch里面一切自定义操作基本上都是继承nn.Module类来实现的 方法预览: class Module(object):def __init__(self):def forward(self, *input):def add_module(self, name, module):def cuda(self, deviceNone):def cpu(self):def __call__(…

git上传分支的原理_GIT分支,创建分支与合并分支的工作原理与教程

开发一个版本,采用的发布流程:(1).从master的最新代码拉取一个开发分支,在上面进行开发(2).在开发分支上不断地进行提交版本,期间,master也会有因为其他版本上线而不停有版本合并(3).要发布的时候,把分支重…

有十五个数按由大到小顺序存放在一个数组中_「图形化编程」前导知识-数组(一)...

今天我们来学习一个新的概念-数组。这节课将通过一个小程序讲解数组的基本概念-数组的长度和下标定义数组指的是有序元素的集合,数组中的每个元素具有相同的类型,按照顺序排列的形式组织在一起。我们可以把数组想象为一个抽屉柜,每个抽屉只能…

octave错误-error: ‘squareThisNumber‘ undefined near line 1 column 1

.m文件名称也应为大写:squareThisNumber.m 问题2: parse error near line 1 of file C:\Users\asus\squareThisNumber.m syntax error >>> {\rtf1\ansi\ansicpg936\deff0\nouicompat{\fonttbl{\f0\fnil\fcharset134 \cb\ce\cc\e5;}} 解决方案…

工业机器人几个自由度_工业机器人有多少个运动自由度呢?

2008-09-11psp有什么好游戏?自由度很高的自由的高的游戏,如果不限定位动作游戏的话还是有一些的。首先就是楼主所说的GTA,自由度高的典范。然后楼上MM说的《怪物猎人》,同样超高自由度的动作游戏,推荐。《魔界战记》,…

python矩阵中找满足条件的元素_Python 找到列表中满足某些条件的元素方法

Python 找到列表中满足某些条件的元素方法 更新时间:2018年06月26日 11:20:17 作者:CS_network 今天小编就为大家分享一篇Python 找到列表中满足某些条件的元素方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看…

计算机启动过程-阮一峰

从打开电源到开始操作,计算机的启动是一个非常复杂的过程。 我一直搞不清楚,这个过程到底是怎么回事,只看见屏幕快速滚动各种提示...... 这几天,我查了一些资料,试图搞懂它。下面就是我整理的笔记。 零、boot的含义 …

python全局名称空间_python名称空间,命名空间

全局名称空间:在python解释器开始执行之后, 就会在内存中开辟一个空间, 每当遇到一个变量的时候, 就把变量名和值之间的关系记录下来, 但是当遇到函数定义的时候, 解释器只是把函数名读入内存, 表示这个函数存在了, 至于函数内部的变量和逻辑, 解释器是不关心的. 也…

10分钟带你了解python_ComeOn!10分钟带你了解Python的变量和数据类型

对任何语言来说,变量和数据类型都是非常重要和基础的内容。这篇文章就带你用10分钟的时间,学会Python的变量和数据类型这个知识点。一、知识点python 关键字变量的定义与赋值input() 函数字符串的格式化二、实验步骤每一种编程语言都有它们自己的语法规则…

python神经网络实例_Python编程实现的简单神经网络算法示例

本文实例讲述了Python编程实现的简单神经网络算法。分享给大家供大家参考,具体如下: python实现二层神经网络 包括输入层和输出层 # -*- coding:utf-8 -*- #! python2 import numpy as np #sigmoid function def nonlin(x, deriv False): if(deriv Tru…

由于被认为是客户端对错误(例如:畸形的请求语法、无效的请求信息帧或者虚拟的请求路由),服务器无法或不会处理当前请求。

问题描述: 由于被认为是客户端对错误(例如:畸形的请求语法、无效的请求信息帧或者虚拟的请求路由),服务器无法或不会处理当前请求。 在实现向数据库中添加记录时,请求发送无效,参数也未传递到控…

为什么服务器要选择 Linux,这里总结了 10 大理由

从最近的统计数据可以看到,全球大量数据中心的服务器已经开始向基于 Linux Server 平台转移。相较 Windows Server 而言,Linux Server 提供了更多优势。包括 Google、Twitter、Facebook 和 Amazon 在内的诸多国际互联网巨头,都在基于 Linux S…

华南x79主板u盘装系统教程_华南x79怎么用u盘重装系统

现如今电脑已经走进千家万户,大家生活和工作基本上都离不开电脑,接下来介绍一下华南x79主板的电脑怎么用U盘重装系统,以重装win7为例,分享一下华南x79主板的电脑u盘重装系统的方法步骤。华南x79主板电脑用u盘重装系统步骤阅读1、插…

怎么通过id渲染页面_完全理解Vue的渲染watcher、computed和user watcher

作者:Naicehttps://segmentfault.com/a/1190000023196603这篇文章将带大家全面理解vue的watcher、computed和user watcher,其实computed和user watcher都是基于Watcher来实现的,我们通过一个一个功能点去敲代码,让大家全面理解其中…

VS2015启动调试程序变慢

问题描述## 标题 vs2015编译速度很快,运行时不停显示加载xxx.dll动态库,加载很慢 解决方案## 标题 打开vs2015,依次点击工具-》选项-》调试-》符号,点击勾选去掉Microsoft符号服务器,清空符号缓存完毕 转载自VS2015启动调试程序变…

广联达深思6代锁_广联达|新版加密锁驱动使用文档

查看已购如何“查看已购”?老版的以下功能:1. 查看已购产品程序2. 产品密码注册程序3. 加密锁设置程序4. 授权服务控制程序新版中我们对这些功能做了整理和重设计:5. 新版的“广联达新驱动”包含以上所有功能“查看已购”入口去哪了&#xff…

根可达算法的根_我的JVM(六):GC的基础概念以及GC算法

一、概述垃圾收集Garbage Collection通常被称为GC,但是GC一般也指Garbage Collecting(垃圾回收这个动作)或Garbage Collector(垃圾回收器),这些都是是JVM知识体系中非常重要的知识,也是程序员必须要掌握的技能,本文将详细讲述Java…

docker开放的端口_docker-5-解决宿主机没有开放81端口却可以直接访问docker启动的81端口nginx容器的问题...

我以为经过前面四篇博文的学习,自己对docker的了解最起码入门了,但是当我用docker启动一个81端口的nginx后(宿主机:容器/81:80),在宿主机的firwall防火墙没有添加81端口的情况下,竟然可以直接访问成功,然后试下docker运…

测试计划与测试方案

测试计划与测试方案主要有以下几点区别: 1.测试计划是一个偏管理性质的文档,而测试方案是一个偏技术类型的文档; 2.测试计划通俗来讲就是解决【谁来做?】【做什么?】的问题,而测试方案是解决【怎么做&#…