gpt4 book ai didi

clojure - 使用 Clojure 中的 map 替换向量

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

我有一个矢量和一张 map 。并且想要替换向量元素,如果它是映射键(用值替换键)

user=> (def v [:a :b :c :d])
#'user/v
user=> (def m {:a :k, :c :q} )
#'user/m

user=> (reduce (fn[x y] (conj x (if (y m) (y m) y))) [] v)
[:k :b :q :d]

有没有更好的方法?

最佳答案

由于您的输入和输出是相同长度的集合,并且集合项是独立计算的,因此使用 mapmapv 会更简单、更惯用矢量输出。

(mapv (fn [x] (m x x))
v)

或者简单地

(mapv #(m % %) v)

请注意,(m x x) 类似于 (if (contains? m x) (m x) x)

关于clojure - 使用 Clojure 中的 map 替换向量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28135291/

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