1

我知道 map/reduce 算法及其用途。它使用称为 Mappers 和 Reducers 的函数,但我也发现人们使用过滤器这个词。

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

4

4 回答 4

8

过滤器就像一个映射,其传递的函数始终是“特征函数”,即对“这属于这里吗?”这个问题返回“是”或“否”的函数。

换句话说,考虑一个定义为 {x | x ∈ X 和P(x) }。过滤器采用基集,测试P(x)是否为真,并仅返回那些为真的成员。

所以 { x | x是自然数,odd( x ) } 是 {1,3,5,7...}。

地图应用任意函数,因此您可以将其视为像 { y | x ∈ Xy = f(x) }。

所以{ y | x是自然数,y = x² } 是 {1,4,9,16,...}。

于 2009-05-02T22:48:03.483 回答
1

Filter 接受一个“列表”和一个函数,将该函数应用于列表的每个成员,并返回一个新列表,该列表仅包含函数应用返回 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]
于 2009-05-02T22:50:12.197 回答
1

过滤器确定是否应保留或删除项目。映射器只是将值转换为另一个值。结果:映射操作的输出集的大小始终与输入集相等。过滤器操作的输出小于输入集。

于 2009-05-02T22:50:22.760 回答
0

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

于 2009-05-02T23:21:16.507 回答