我知道map / reduce alghoritm及其用途。它使用的是名为Mappers和Reducers的函数,但我也发现人们使用的是Filters。
过滤器与Mappers相同还是有一些显着差异?
答案 0 :(得分:8)
过滤器就像一张地图,其传递的函数始终是一个“特征函数”,这是一个函数,对于“这属于何处?”这个问题返回“是”或“否”。
换句话说,想象一个定义为{x |的集合x∈X和 P(x)}。 Filter获取基本集,测试 P(x)是否为true,并仅返回其为真的成员。
所以{ x | x 是一个自然数,奇数( x )}是{1,3,5,7 ...}。
map 应用任意函数,因此您可以将其视为{y | x∈X和 y = f(x)}。
所以{ y | x 是一个自然数, y =x²}是{1,4,9,16,...}。
答案 1 :(得分:1)
Filter采用“list”和函数,将函数应用于列表的每个成员,并返回一个新列表,其中仅包含函数应用程序返回true的成员。例如:
l = [1,2,3,4]
l = filter(lambda x: x < 3, l)
print l # [1,2]
Map执行相同的操作,但返回包含函数应用程序结果的列表:
l = [1,2,3,4]
l = map(lambda x: x < 3, l)
print l # [True,True,False,False]
答案 2 :(得分:1)
过滤器确定是应保留还是删除项目。映射器只是将值转换为另一个值。因此:映射操作的输出集总是与输入集大小相等。过滤器操作的输出小于输入设置。
答案 3 :(得分:0)
通常,map函数接受输入集和函数,并返回包含每个输入元素的函数输出的集合。过滤器接受输入集和布尔函数,并返回一个包含函数返回true的输入值的集合。