019-python函数式编程-三大基础函数

函数式编程的本质是通过函数处理数据,过滤、映射和聚合是处理数据的三大基本操作。
这三种操作python对应的基本函数:filter(),map(),reduce()

filter()

过滤操作使用filter() 函数,它可以对可迭代对象的元素进行过滤
filter(function, iterable)
其中参数 function 是一个函数,参数iterable是可迭代对象。filter函数调用时iterable会被遍历,它的元素被逐一传入function函数,function函数返回布尔值。 在function函数中编写过滤条件,结果为True的元素被保留,False的被过滤。

users = ['Tony', 'tom', 'Ben', 'Alex']
users_filter = filter(lambda u: u.startswith('T'), users)
print(list(users_filter))

['Tony', 'Tom']
<filter object at 0x0000022873498B50>

filter() 函数还不是一个列表,是一个filter对象,需要使用list()函数转换过滤之后的数据为列表。

num_list = range(1, 11)
num_filter = filter(lambda it: it % 2 == 0, num_list)
print(list(num_filter))

map()

映射操作使用 map() 函数,它可以对可迭代对象的元素进行变换
map(function, iterable)
其中参数 function 是一个函数,参数iterable是可迭代对象。map函数调用时iterable会被遍历,它的元素被逐一传入function函数,在function函数中对元素进行变换。

users = ['Tony', 'Tom', 'Ben', 'Alex']
users_map = map(lambda u: u.lower(), users)
print(list(users_map))

函数式编程时数据可以从一个函数 “流入" 另外一个函数,但是python不支持”链式“API.
例如下面只能先进行过滤,然后在进行映射变换。

users = ['Tony', 'Tom', 'Ben', 'Alex']
users_filter = filter(lambda u: u.startswith('T'), users)
# users_map = map(lambda u: u.lower(), users_filter)
users_map = map(lambda u: u.lower(), filter(lambda u: u.startswith('T'), users))
print(list(users_map))

reduce()

集合操作会将多个数据集合起来输出单个数据,聚合中最基础的就是归纳函数 reduce(),reduce()函数会将多个数据按照指定的算法积累叠加起来,最后输出一个数据。
reduce(function, iterable[, initializer])
其中参数 function 是一个聚合操作函数,函数有两个参数,iterable是可迭代对象,initializer是初始值。

from functools import reduce

a = range(1, 10)
# a_reduce = reduce(lambda acc, i: acc + i, a)
a_reduce = reduce(lambda acc, i: acc + i, a, 2)
print(a_reduce)

导入函数,lambda acc, i: acc + i是进行聚合的表达式,acc 是 上次累计的计算结果,i 是当前元素,2 是初始值。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值