首页 > 解决方案 > 如何从向量的向量中打印第 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]

标签: vectorindexingclojurelisp

解决方案


解决此问题的惯用 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使用给定的列值调用它。

结果将是来自所需列的一系列值。


推荐阅读