获取一个项目在序列中出现的位置

getting the positions of the occurrences of one item in a sequence

从一个序列中,我需要获取给定项目出现的所有位置。

我在问自己这是否是解决问题的好方法:

(defn get-positions [item coll]
  (->> (map-indexed vector coll)
       (filter (fn [[_ v]] (= item v)))
       (map first)))

这也适用于字符串,它们将被第一个映射转换为序列。但是,如果我知道输入是字符串,是否会有针对此问题的更具体的字符串方法?

既然你已经有了解决问题的通用方案,为什么还要花更多的精力去尝试提出一个更具体的方案呢?这样做的好处可以忽略不计。

为了多样性,这是实现您的功能的另一种方法:

(defn positions [x coll]
  (keep-indexed #(when (= x %2) %1) coll))