在Clojure中循环数组的惯用方法

Tim*_*Tim 1 python clojure

我是clojure的新手,以及我如何找到简单的数组操作,这些操作在python中很容易在clojure中完成.例如,在clojure中执行此操作的惯用方法是什么?

for i = 1 to len(arr)-1:
  sum[i] = arr[i-1] + i
Run Code Online (Sandbox Code Playgroud)

Art*_*ldt 5

Clojure有一套很好的序列操作函数,通常对这些常见任务有帮助.这个例子就是(map-indexed + arr)

user> (def arr [1 2 38 2 3 9 4 2])
#'user/arr
user> (map-indexed + arr)
(1 3 40 5 7 14 10 9)
Run Code Online (Sandbox Code Playgroud)

虽然这只是因为你选择的具体例子.一个更普遍的答案是使用map,mapv,reduce,或reductionsfor为这样的事情.例如:

user> (for [i (range 0 (count arr))] (+ i (arr i)))
(1 3 40 5 7 14 10 9)
Run Code Online (Sandbox Code Playgroud)