gpt4 book ai didi

clojure - 如何在 Clojure 中修改向量的一部分?

转载 作者:行者123 更新时间:2023-12-04 03:34:08 24 4
gpt4 key购买 nike

我想知道我是否遗漏了一些涉及矢量操作的基本知识。假设我有以下内容:

(def xs [9 10 11 12 13]) 
(def idx [0 2])
(def values [1 3])

如果我想返回向量 [1 10 3 12 13]在 Matlab 中,我会写 xs(idx) = values .
在 Clojure 中,是否有实现这一目标的原始方法?现在我正在使用以下功能:
(defn xinto [seq idx val]
(apply assoc seq (interleave idx val)))

谢谢。

最佳答案

有点尴尬因为你们分手了idxvalues分成两个 seq,当它们在概念上是索引到值的映射时。因此,如果您允许我对您的数据格式进行一些创造性的修改:

(def x [9 10 11 12 13]) 
(def changes {0 1, 2 3})

(defn xinto [v changes]
(reduce (fn [acc [k v]]
(assoc acc k v))
v
changes))

(xinto x changes) ;; gets the result you want

如果您生成 idxvalues以某种不方便将它们组合在一起的奇怪方式,您可以稍后使用 (map list idx values) 将它们组合在一起。然后使用我的 xinto实现。

关于clojure - 如何在 Clojure 中修改向量的一部分?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7086818/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com