0

我有

[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 不返回其实际索引,而是使用其值搜索它。

任何人都可以帮忙吗?

4

2 回答 2

5

你可以这样做map

(map + [1 1 1 1 1] [2 2 2 2 2])
;; => (3 3 3 3 3)
于 2013-03-09T13:32:04.147 回答
1

如果您使用core.matrix( link ),则可以扩展运算符以处理数字向量,您可以这样做:

(use 'clojure.core.matrix.operators)

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

一般来说,core.matrix如果您要在 Clojure 中使用向量/矩阵/多维数组进行大量工作,您应该考虑一下。

于 2013-03-10T00:15:22.983 回答