gpt4 book ai didi

Clojure:频率图的惯用代码

转载 作者:行者123 更新时间:2023-12-02 21:12:29 26 4
gpt4 key购买 nike

让我们制作频率图:

(reduce #(update-in %1 [%2] (fnil inc 0)) {} ["a" "b" "a" "c" "c" "a"])

我关心的是 lambda #(...) 内的表达式 - 这是规范的方法吗?我可以做得更好/更短吗?

编辑:我发现的另一种方式:

(reduce #(assoc %1 %2 (inc %1 %2 0)) {} ["a" "b" "a" "c" "c" "a"])

看起来很相似,有什么优点/缺点?性能?

最佳答案

自 Clojure 1.2 起,clojure.core 中有一个 frequencies 函数:

user=> (doc frequencies)
-------------------------
clojure.core/frequencies
([coll])
Returns a map from distinct items in coll to the number of times
they appear.

示例:

user=> (frequencies ["a" "b" "a" "c" "c" "a"])
{"a" 3, "b" 1, "c" 2}

它恰好使用了 transient 和三元get;请参阅(源频率) 获取代码,该代码既符合惯用法,又具有高度的性能感知能力。

关于Clojure:频率图的惯用代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18687314/

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