【问题标题】:getting the positions of the occurrences of one item in a sequence获取一个项目在序列中出现的位置
【发布时间】:2016-02-18 10:17:26
【问题描述】:

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

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

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

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

【问题讨论】:

  • 这正是我解决这个问题的方法

标签: clojure clojurescript


【解决方案1】:

既然您已经有了解决问题的通用解决方案,为什么还要花更多的精力来尝试想出一个更具体的解决方案?这样做的好处是微不足道的。

为了多样化,这里有另一种方式来实现你的功能:

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

【讨论】:

  • 好吧,我明白了。我一直在寻找“过滤索引”,并且保持索引非常相似。只有 nil/false 不同。我只是将 [coll x] 切换为 [x coll],因为我发现最后有 coll 通常很有用。
  • @AntonHarald 够公平的;我在答案中切换了参数顺序。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-09-26
  • 2021-12-28
  • 2015-10-26
  • 1970-01-01
  • 2011-08-07
  • 1970-01-01
相关资源
最近更新 更多