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

如何在Clojure中将两个seq中相同索引的元素添加到一起,clojure,Clojure,我有 及 我想要 [2 2 2 2 2] 我试过了 [3 3 3 3 3] 它给出了错误的结果,因为.indexOf不返回其实际索引,而是使用其值进行搜索 有人能帮忙吗?你可以用map: (for [x s1 y s2 :when (= (.indexOf s1 x) (.indexOf s2 y))] (+ x y)) 您可以使用map: (for [x s1 y s2 :when (= (.indexOf s1 x) (.index

我有

我想要

[2 2 2 2 2]
我试过了

[3 3 3 3 3]
它给出了错误的结果,因为.indexOf不返回其实际索引,而是使用其值进行搜索


有人能帮忙吗?

你可以用
map

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

您可以使用
map

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

如果使用
core.matrix
(),则可以扩展运算符以处理数字向量,您只需执行以下操作:

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

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

如果使用
core.matrix
(),则可以将运算符扩展为使用数字向量,您只需执行以下操作:

(map + [1 1 1 1 1] [2 2 2 2 2])
;; => (3 3 3 3 3)
一般来说,如果您要在Clojure中使用向量/矩阵/多维数组进行大量工作,您应该查看
core.matrix