如何将两个参数函数映射到列表?

时间:2013-07-17 11:45:58

标签: clojure

我有一个包含一些值的元素列表。

我想将它映射到一个函数并生成一个列表,其中包含通过将这两个参数函数应用于第一个列表中的连续值而计算出的值。

此列表将少一个元素。

映射函数应该一次取两个参数。

修改

示例

我使用的两个参数函数非常复杂,所以为了简单起见,我们假设它是一个计算两个数的平均值的函数。

如果我有一个列表:[3 8 11 14 19 20 88]

我可以编写一个函数来映射我的average函数,(average 3 8)将给5.5

(average 8 11)

将提供9.5

(average 11 14)会给12.5

依旧......

一次将平均值应用于列表的两个连续值应该给我。

[5.5 9.5 12.5 16.5 19.5 54.0]

结果。

map将单个参数函数应用于整个列表,并生成一个具有完全相同元素数的新列表。

我想要的是一种应用我的函数的方法,它接受两个参数一次连续两次,将我的函数应用于它并将结果添加到新列表。

2 个答案:

答案 0 :(得分:13)

您可以使用地图:

(map f coll (rest coll))

答案 1 :(得分:7)

(fn [f coll] (map #(apply f %1) (partition 2 1 coll)) 

现在直接进入4clojure!