如何在Clojure中将两个seq中相同索引的元素一起添加

时间:2013-03-09 13:29:33

标签: clojure

我有

[1 1 1 1 1]

[2 2 2 2 2]

我想要

[3 3 3 3 3]

我试过

(for [x s1
      y s2
      :when (= (.indexOf s1 x) (.indexOf s2 y))]
   (+ x y))

它给出错误的结果,因为.indexOf不返回其acctual索引,而是使用其值搜索它。

任何人都可以提供帮助吗?

2 个答案:

答案 0 :(得分:5)

您可以使用map

执行此操作
(map + [1 1 1 1 1] [2 2 2 2 2])
;; => (3 3 3 3 3)

答案 1 :(得分:1)

如果您使用core.matrixlink),则可以将运算符扩展为使用数字向量,您可以这样做:

(use 'clojure.core.matrix.operators)

(+ [1 1 1 1 1] [2 2 2 2 2])
=> [3 3 3 3 3]

一般来说,如果要在Clojure中使用矢量/矩阵/多维数组做很多工作,你应该看core.matrix