python fun函数的功能是_python高阶函数的使用

本文主要用于讲述如何使用functools中的几个函数的使用

partial

该方法主要用于简化一些固化了参数的函数调用,例如下面示例中需要对一些二进制数转换成十进制,那可以使用int('0b11',base=2),如果有大量需要转换的二进制数时,每次都输入base=2这个参数很多余,这就可以使用partial了,使用了partial之后,以后再需要转换二进制数时只需要bin_10('0b11')即可

from functools import partial

bin_10 = partial(int, base=2)

print(bin_10("0b11"))

map

map(func, seq),其含义指的是:对后面可迭代序列中的每个元素执行前面的函数func的功能,最终获取到一个新的序列,python3返回一个迭代器,可以使用list得到一个列表

list(map(lambda x,y : x*y,(1,2,4),(2,3,6)))

[2, 6, 24]

reduce

reduce(function, sequence [, initial] ) -> value

reduce依次从sequence中取一个元素,和上一次调用function的结果做参数,再次调用function。

reduce.jpg

第一次调用function时,如果提供initial参数,会以initial和sequence中的第一个元素作为参数调用function(initial为a,sequence中的第一个元素为b),如果没提供会以序列sequence的第一个数(作为a)和第二个数(作为b)作为参数调用

from functools import reduce

def add(a, b):

print(a, b)

return a + b

reduce(add, [1, 2, 3, 4, 5],0.1)

0.1 1

1.1 2

3.1 3

6.1 4

10.1 5

filter

filter()函数用于过滤序列,过滤掉不符合条件的那些元素,返回符合条件的元素组成新列表。

序列中的每个元素作为参数传递给函数进行判断,返回True或者False,最后将返回True的元素放到新列表中。

下面函数get_num是过滤出列表中大于2的数字

filter(function, iterable) # 前者为函数,后者为待执行的序列

def get_num(a):

return True if a > 2 else False

print(list(filter(get_num, [1, 2, 3, 4, 5])))

[3, 4, 5]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值