【发布时间】:2021-08-20 01:08:43
【问题描述】:
注意:这只是一个基本的编程问题,与“大数据处理”的 Hadoop 或 Map/Reduce 方法无关。
我们来个序列(1 2 3 4 5):
要将其映射到某个函数,比如square,我可以这样做:
(define (map function sequence)
; apply the function to each element in the sequence
; we do not reduce it, but return a list
(if (null? sequence)
nil
(cons (function (car sequence))
(map function (cdr sequence)))))
(map (lambda (x) (* x x)) '(1 2 3 4 5))
; (1 4 9 16 25)
>>> map(lambda x: x*x, [1,2,3,4,5])
# [1, 4, 9, 16, 25]
>>> def mymap(function, sequence):
return [function(item) for item in sequence]
>>> mymap(lambda x: x*x, [1,2,3,4,5])
# [1, 4, 9, 16, 25]
对于像“map-reduce”这样的东西,如果我们假设一个给定的序列,它可能有大约三个步骤(我认为?):
map-
filter(订单可能与map交换,具体取决于正在执行的操作) reduce
这是对“map-reduce”范式的正确理解吗?它通常是不是一个看起来像这样的函数:
mapreduce(map_function, filter_function, reduce_function, sequence)
或者说组合在一起的时候一般是怎么处理的?
【问题讨论】:
-
我有点迷茫,究竟你在这里找什么?
-
@gold_cy 非常熟悉上述数据/信号处理范例的人,可以对它通常如何完成进行结构性概述(我已经在方案或 python 中展示了一个示例......任何一种语言很好)。
标签: python functional-programming mapreduce scheme lisp