计数在矢量矢量中的元素在clojure中

时间:2014-02-03 20:46:52

标签: vector clojure count

如果我将矩阵定义为:

(def m1 [[1 2 3][4 5 6][7 8 9]])

如何计算clojure中向量内的向量。我知道(计数m1)将返回3,这是我在初始向量中的向量数,但我不记得如何计算内向量(自从我不得不处理以来已经很长时间了)任何lisp方言)。另外我不想展平矢量,然后计算它,因为我需要单独计算值(即我想返回3,3,3,因为每个内部向量有3个元素。我猜的最后一个限制是我想在不使用地图的情况下这样做,因为我意识到我可以做到(地图计数m1)。

4 个答案:

答案 0 :(得分:2)

这实际上非常简单,只需致电:

(map count m1)

或者如果你想把你的结果也放在矢量中:

(mapv count m1)

答案 1 :(得分:2)

您需要使用map。它将count应用于向量中的每个元素并返回计数列表。

(def m1 [[1 2 3][4 5 6][7 8 9]])
(map count m1)
=> (3 3 3)

答案 2 :(得分:2)

您的编辑:“我想在不使用地图的情况下执行此操作。”

(defn counts [vs]
  (loop [vs vs, cs []]
    (if (empty? vs)
      cs
      (recur (rest vs), (conj cs (count (first vs)))))))

答案 3 :(得分:0)

一个答案很好,但要用计数。假设不使用计数也不使用地图

((fn [lst]   (循环[l lst,n 0]      (如果(空?l)          ñ          (recur(rest l)(inc n)))))'(1 2 3))