【问题标题】:How to print nth index from vector of vectors如何从向量的向量中打印第 n 个索引
【发布时间】:2019-09-04 03:26:32
【问题描述】:

我有一个作业问题,要求我从向量向量中打印(在向量中)指定的第 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]

【问题讨论】:

    标签: vector indexing clojure lisp


    【解决方案1】:

    解决这个问题的惯用 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

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

    【讨论】:

    • 别担心理解clojure和FP的各种成语需要时间。如果您发现答案有帮助,如果您接受答案,我将不胜感激。
    猜你喜欢
    • 2015-06-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多