Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vector 如何从矢量的矢量打印第n个索引_Vector_Indexing_Clojure_Lisp - Fatal编程技术网

Vector 如何从矢量的矢量打印第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

我有一个家庭作业问题,要求我打印(在向量中)向量向量中指定的第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==>列向量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的各种习语需要时间。如果你觉得这个答案有帮助,如果你接受这个答案,我将不胜感激。