gpt4 book ai didi

clojure - 如何从列表中删除特定元素?

转载 作者:行者123 更新时间:2023-12-02 16:01:48 25 4
gpt4 key购买 nike

我知道这可能是一个愚蠢的问题,但我不明白。我有一些数据:

(def x (range 1 14))

-> (1 2 3 4 5 6 7 8 9 10 11 12 13)

例如,我想返回一个不带“3”的列表。谷歌搜索“clojure从列表中删除项目”把我带到了这个:

  (remove pred coll)

所以我尝试使用 even? 的示例:

  (remove even? x) 

-> (1 3 5 7 9 11 13)

太棒了!它适用于我的数据!我只需要更改 pred。我的第一个猜测是:

  (remove (= 3) x)

java.lang.ClassCastException: java.lang.Boolean cannot be cast to clojure.lang.IFn

好的,我们不需要计算 (= 3),所以我们在前面加上 #:

  (remove #(= 3) x)

clojure.lang.ArityException: Wrong number of args (1)` passed to...

我知道这很微不足道,但我该怎么做呢?

最佳答案

我喜欢使用集合来做这种事情。好干净..

删除元素:

(删除 #{3 5} [1 2 3 4 5 6 7 8 9])

保留元素:

(保留 #{7 5 3} [1 2 3 4 5 6 7 8 9])

检查元素是否存在:

(一些#{5} [1 2 3 4 5 6 7 8 9])

这是有效的,因为当将一个集合用作一个参数的函数时,如果该参数位于集合内部,则它会返回该参数。在删除示例中,元素 35 导致集合返回一个 truthy 值:它们本身。 keepsome 示例都会发生同样的情况,只不过 some 示例具有返回集合中第一个元素的额外好处这也在集合中。

关于clojure - 如何从列表中删除特定元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29302177/

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