python apply lambda_Python中的 lambda,filter,map,zip,reduce,apply(学习笔记)

1、lambda(创建匿名函数)

lambda只是一个表达式,函数体比def简单很多,很多时候定义def,然后写一个函数太麻烦,这时候就可以用lambda定义一个匿名函数。

lambda的主体是一个表达式,而不是一个代码块。仅仅能在lambda表达式中封装有限的逻辑进去。

lambda表达式是起到一个函数速写的作用。允许在代码内嵌入一个函数的定义。

f = lambda a,b: a if a>b elsebprint(f(6, 8))

2、filter(function, iterable)

filter(function, iterable):简单的理解为过滤器,需要两个参数,function,和一个可迭代对象(字符串、列表、元组),过滤器会依次将序列的值传入function中,

如果返回True的话,将其重新生成一个列表返回。

#Python 2.x 返回列表,Python 3.x 返回迭代器

1 list(filter(lambda x:True if x % 3 == 0 else False, range(50)))#在Python 2.x中,无需list()即可返回列表2 [0, 3, 6, 9, 12, 15, 18, 21, 24, 27, 30, 33, 36, 39, 42, 45, 48]

3、map(function, iterable, ...)

map():映射,用法和filter()类似,也是将序列放入函数进行运算,但是,不论运算结果为什么,map()都将忠实反馈,这是map()和filter()的主要区别。请注意,filter()和map()中的function都必要有一个返回值。

x = [1,2,3,4,5]

y= [2,3,4,5,6]

list(map(lambda x,y:(x*y)+2,x,y))#输出:[4, 8, 14, 22, 32]

1 >>> list(map(lambda x:True if x % 3 == 0 else False, range(100)))2 [True, False, False, True, False, False, True, False, False, True, False, False, True, False, False, True, False, False, True, False, False, True, False, False, True, False, False, True, False, False, True, False, False, True, False, False, True, False, False, True, False, False, True, False, False, True, False, False, True, False, False, True, False, False, True, False, False, True, False, False, True, False, False, True, False, False, True, False, False, True, False, False, True, False, False, True, False, False, True, False, False, True, False, False, True, False, False, True, False, False, True, False, False, True, False, False, True, False, False, True]

View Code

4、zip([iterable,...])

参数:iterabl -- 一个或多个迭代器; 返回值:返回一个对象 #Python 2.x 返回列表,Python 3.x 返回可迭代对象

zip() 函数用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的对象,这样做的好处是节约了不少的内存。

我们可以使用 list() 转换来输出列表。

如果各个迭代器的元素个数不一致,则返回列表长度与最短的对象相同,利用 * 号操作符,可以将元组解压为列表。

>>>a = [1,2,3]>>> b = [4,5,6]>>> c = [4,5,6,7,8]>>> zipped = zip(a,b) #返回一个对象

>>>zipped

>>> list(zipped) #list() 转换为列表

[(1, 4), (2, 5), (3, 6)]>>> list(zip(a,c)) #元素个数与最短的列表一致

[(1, 4), (2, 5), (3, 6)]>>> a1, a2 = zip(*zip(a,b)) #与 zip 相反,zip(*) 可理解为解压,返回二维矩阵式

>>>list(a1)

[1, 2, 3]>>>list(a2)

[4, 5, 6]>>>

5、reduce

功能: 对一个序列进行压缩运算,得到一个值。但是reduce在python2的时候是内置函数,到了python3移到了functools模块,所以使用之前需要 from functools import reduce

调用: reduce(function,iterable),其中function必须传入两个参数,iterable可以是列表或者元组

from functools importreduce

y= [2,3,4,5,6]

reduce(lambda x,y: x + y,y) #直接返回一个值

其计算原理:

先计算头两个元素:f(2, 3),结果为5;

再把结果和第3个元素计算:f(5, 4),结果为9;

再把结果和第4个元素计算:f(9, 5),结果为14;

再把结果和第5个元素计算:f(14, 6),结果为20;

由于没有更多的元素了,计算结束,返回结果20。

6、apply

功能: 是pandas中的函数,应用对象为pandas中的DataFrame或者Series。大致有两个方面的功能:一是直接对DataFrame或者Series应用函数,二是对pandas中的groupby之后的聚合对象apply函数

调用: apply(function,axis),function表明所使用的函数,axis表明对行或者列做运算

例子:

importnumpy as np

a= np.random.randint(low=0,high=4,size=(2,4))

data=pd.DataFrame(a)

data.apply(lambda x:x*10)#输出:

总结

1、filter和map都是python内置的函数,可以直接调用,reduce在functools模块,apply在pandas模块

2、要过滤删减序列用filter;要对多个序列做函数运算用map;在pandas里面直接调用apply,尤其是聚合对象,当然还有agg,日后补充。reduce用得少。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值