我知道map / reduce alghoritm及其用途。它使用的是名为Mappers和Reducers的函数,但我也发现人们使用的是Filters。

过滤器与Mappers相同还是有一些显着差异?

有帮助吗?

解决方案

过滤器类似于传递函数始终是“特征函数”的映射,该函数返回“是”和“是”。或“不”问题“这是否属于这里?”

换句话说,想象一个定义为{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,...}。

其他提示

过滤器采用“列表”和一个函数,将函数应用于列表的每个成员,并返回一个新的列表,其中只包含函数应用程序返回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]

过滤器确定是应保留还是删除项目。映射器只是将值转换为另一个值。因此:映射操作的输出集总是与输入集大小相等。过滤器操作的输出小于输入设置。

通常,map函数接受输入集和函数,并返回包含每个输入元素的函数输出的集合。过滤器接受输入集和布尔函数,并返回一个包含函数返回true的输入值的集合。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top