Vector 如何从矢量的矢量打印第n个索引
我有一个家庭作业问题,要求我打印(在向量中)向量向量中指定的第n个索引。例如,如果我输入Vector 如何从矢量的矢量打印第n个索引,vector,indexing,clojure,lisp,Vector,Indexing,Clojure,Lisp,我有一个家庭作业问题,要求我打印(在向量中)向量向量中指定的第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
[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==>列向量0
结果是:
[1 2 3 4][5 6 7 8][9 10 11 12]
0
而不是:
[1 5 9]
解决这个问题的惯用方法是使用map
(def v[[1 2 3 4][5 6 7 8][9 10 11 12]]
(定义列[coll pos]
(地图#(第n%pos)coll))
nth
函数给出向量中的第n个元素。map函数将迭代每个内部向量,并使用给定的列值对其调用nth
结果将是所需列中的一系列值。解决此问题的惯用clojure方法是使用map
(def v[[1 2 3 4][5 6 7 8][9 10 11 12]]
(定义列[coll pos]
(地图#(第n%pos)coll))
nth
函数给出向量中的第n个元素。map函数将迭代每个内部向量,并使用给定的列值对其调用nth
结果将是所需列中的一系列值。别担心,理解clojure和FP的各种习惯用法需要时间。如果你觉得答案有帮助,如果你接受了答案,我会非常感激。别担心,理解clojure和FP的各种习语需要时间。如果你觉得这个答案有帮助,如果你接受这个答案,我将不胜感激。