获取列表中某个给定数字的3个最接近的值?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了获取列表中某个给定数字的3个最接近的值?相关的知识,希望对你有一定的参考价值。
给定一个整数列表,找到给定数字的3个最接近的值。
=> (def mylist '(3 6 7 8 9 12 14))
=> (get_closest mylist 10)
(8 9 12)
答案
(letfn [(closest [a b]
(take 3 (sort-by #(Math/abs (- % b)) a)))]
(let [a '(3 6 7 8 9 12 14)]
(closest a 10)))
另一答案
关注@ akond的回答,但作为一般功能:
(defn closest [x n coll]
"Return a list of the n items of coll that are closest to x"
(take n (sort-by #(Math/abs (- x %)) coll)))
(closest 4 3 (range 10))
; => (4 3 5)
请注意,如果coll
是Java数组,sort-by
可能会修改它。
以上是关于获取列表中某个给定数字的3个最接近的值?的主要内容,如果未能解决你的问题,请参考以下文章