我有一个这样的向量列表:
([4 0] [4 2] [2 1] [4 1])
如何将每个向量的第一个元素递增一个特定值 X?
期望的输出:
([5 0] [5 2] [3 1] [5 1])
这是我目前的方法,但我认为我可以更简单:
(defn shiftVector [oldVector number]
(map vector
(map #(+ (first %) number) oldVector )
(map #(second %) oldVector))
)
最佳答案
由于向量在它们的索引上是关联的,所以最简单的方法可能是:
(defn shift-vector [v n]
(map #(update % 0 + n) v))
(shift-vector [[4 0] [4 2] [2 1] [4 1]] 1)
;=> ([5 0] [5 2] [3 1] [5 1])
这适用于列表中的任何长度向量(空向量除外,但无论如何你都不能增加它们)。
关于vector - Clojure:增加列表中每个向量的第一个元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66497082/