8

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

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

该列表将少一个元素。

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

编辑

例子

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

如果我有一个清单:[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 将单个参数函数应用于整个列表,并生成一个具有完全相同数量元素的新列表。

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

4

2 回答 2

14

你可以用地图做到这一点:

(map f coll (rest coll))
于 2013-07-17T13:20:31.420 回答
7
(fn [f coll] (map #(apply f %1) (partition 2 1 coll)) 

现在直接进入 4clojure!

于 2013-07-17T12:05:27.303 回答