python里map 里 filter_python中的map、filter、reduce函数

map:处理序列中的每个元素,得到的结果是一个'列表',该列表元素个数及位置与原来一样

map(func, array)

map:函数

num_l = [1,2,5,8,7,11,22,55]

def map_test(func, array):

ret = []

for i in num_l:

res = func(i)

ret.append(res)

return ret

# 默认func=lambda x:x+1 ,array=num_1

print(map_test(lambda x:x+1, num_l))

"""这里的map相当于map_test方法

map(方法,可迭代对象)这个可迭代对象可以是列表也可以是其他的

"""

res = map(lambda x:x+1, num_l)

print('内置函数map,处理结果:', res)

print(list(res))

filter:遍历序列中的每个元素,判断每个元素得到的布尔值,如果是true则留下

filter(func, array)

例如:people=[

{'name':'alex', 'age': 1000},

{'name':wupeiqi', 'age': 1000},

{'name':'yuanhao', 'age': 9000},

{'name':'linhaifeng', 'age': 18}

]

print(list(filter(lambda p:p['age']<=18, people)))

reduce:处理一个序列,然后把序列进行合并操作

reduce(func, array, init) init是初始值

例如:

from functools import reduce

num_l = [1, 2, 3, 100]

print(reduce(lambda x, y: x*y, num_l,100))

# 相当于

# init 是在定义初始值

def reduce_test(func,array,init=None):

if init is None:

res = array.pop(0) # 把列表的第一个值拿出来

else:

res = init

for num in array:

res = func(res, num)

return res

# 初始值为5,就是 5*1*2*3*100=30000

print(reduce_test(lambda x,y:x*y, num_l,5))

print(reduce_test(lambda x,y:x*y, num_l))

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
PythonMapReduce模型filtermapreduce操作分别如下: 1. filter操作: filter操作会对输入数据进行筛选,只保留符合条件的数据。在MapReduce模型filter操作通常在映射(Map)阶段完成。在映射阶段,可以对输入数据进行筛选,只保留符合条件的数据,并将它们转换为键值对(key-value pairs),以便后续的归约(Reduce)操作处理。 2. map操作: map操作会对输入数据进行转换,生成新的数据集合。在MapReduce模型map操作通常在映射(Map)阶段完成。在映射阶段,可以对输入数据进行转换,将它们转换为一系列的键值对。这些键值对是归约任务所需的间结果。 3. reduce操作: reduce操作会对输入数据进行聚合,生成最终的结果。在MapReduce模型reduce操作通常在归约(Reduce)阶段完成。在归约阶段,将相同键的值合并为一个结果。最终的结果就是reduce操作生成的结果。 在Python,可以使用以下函数来实现MapReducefiltermapreduce操作: 1. filter操作: 可以使用Python内置函数filter()来实现filter操作。filter()函数会对一个序列进行过滤,返回符合条件的元素组成的序列。 2. map操作: 可以使用Python内置函数map()来实现map操作。map()函数会对一个序列进行映射,返回一个新的序列。在MapReduce模型,可以使用map()函数将输入数据转换为一系列的键值对。 3. reduce操作: 可以使用Python内置函数reduce()来实现reduce操作。reduce()函数会对一个序列进行聚合,返回一个单一的值。在MapReduce模型,可以使用reduce()函数将相同键的值合并为一个结果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值