如何访问向量中的向量中的所有第二个元素



我有以下结构:

(def m [[120 2] [123 88] [234 77]])

以及值

(def z 10)

我想要访问较小向量(在m内(内的所有第二元素,并将它们乘以z,然后将结果与向量的第一元素一起存储。

即计算(* secondvectorelement z)结果看起来像[120 resultofcalculation]

到目前为止,我已经尝试过:

(map #(* (second m) z ))

但我被困在这个问题上了。TIA。

您可以使用带有析构函数的for列表综合:

(for [[fst snd] m] [fst (* snd z)])

或者使用mapupdate功能的另一种方法:

(map #(update % 1 * z) m)
user=> (map (fn [v] [(first v) (* z (second v))]) m)
([120 20] [123 880] [234 770])

试试这个:

(map #(vector (first %) (* (second %) z)) m)

在我看来,没有必要定义z,所以:

(map #(vector (first %) (* (second %) 10)) m)

编辑:我更喜欢@erdos的答案,尽管

略有不同的方法:

(conj [] (apply min (map #(first %) m)) (apply * (conj (map #(second %) m) z)))

如果我们将上述应用于OP的数据,我们就会得到

[120 135520]

相关内容

  • 没有找到相关文章

最新更新