如何从向量向量打印第 n 个索引



我有一个家庭作业问题,需要我(在向量中(从向量向量中打印指定的第 n 个索引。例如,如果我输入[1 2 3 4] [5 6 7 8] [9 10 11 12]并输入指定第 n 个索引 1 的函数,则我的结果必须[2 6 10]

非常困惑,不擅长Clojure,只是一个Java/Python人。

我已经尝试使用一个接受向量和变量作为第 n 个的函数。但它返回整个向量和为 x 输入的值。

(defn column [vector x] 
(cond
(empty? vector)
nil 
:else
(column (nth vector x))))

如果我输入:user ==> column vector 0

结果是这样的:[1 2 3 4] [5 6 7 8] [9 10 11 12] 0

而不是:[1 5 9]

解决这个问题的一个惯用的 clojure 方法是使用 map

(def v [[1 2 3 4] [5 6 7 8] [9 10 11 12]])
(defn column [coll pos]
(map #(nth % pos) coll))

nth函数给出向量中的第 n 个元素。map 函数将遍历每个内部向量,并使用给定的列值调用nth

结果将是所需列中的值序列。

最新更新