如何从列表中删除特定元素?
How can I remove specific element from a list?
我知道这可能是个愚蠢的问题,但我不明白。
我有一些数据:
(def x (range 1 14))
-> (1 2 3 4 5 6 7 8 9 10 11 12 13)
我想要 return 一个没有“3”的列表。
谷歌搜索 "clojure remove item from list" 把我带到了这个:
(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...
我知道这是微不足道的,但我该怎么办?
你应该使用:
(remove #(= 3 %) x)
#(= 3)
不带参数(但 remove
尝试将一个参数传递给该函数)。
#(= 3 %)
接受一个参数,并使用该参数 (%
) 和 3
.
调用 =
我喜欢用布景做这种事。好干净..
删除元素:
(remove #{3 5} [1 2 3 4 5 6 7 8 9])
保留元素:
(keep #{7 5 3} [1 2 3 4 5 6 7 8 9])
检查元素是否存在:
(some #{5} [1 2 3 4 5 6 7 8 9])
这是有效的,因为当一个集合被用作一个参数的函数时,它 return 如果它在集合内部,它就是参数。在删除示例中,元素 3
和 5
使集合成为 return 一个 truthy 值:他们自己。 keep
和 some
示例都会发生同样的事情,除了 some
示例具有 returning 集合中第一个元素的额外好处,该元素也在放。
我知道这可能是个愚蠢的问题,但我不明白。 我有一些数据:
(def x (range 1 14))
-> (1 2 3 4 5 6 7 8 9 10 11 12 13)
我想要 return 一个没有“3”的列表。 谷歌搜索 "clojure remove item from list" 把我带到了这个:
(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...
我知道这是微不足道的,但我该怎么办?
你应该使用:
(remove #(= 3 %) x)
#(= 3)
不带参数(但 remove
尝试将一个参数传递给该函数)。
#(= 3 %)
接受一个参数,并使用该参数 (%
) 和 3
.
=
我喜欢用布景做这种事。好干净..
删除元素:
(remove #{3 5} [1 2 3 4 5 6 7 8 9])
保留元素:
(keep #{7 5 3} [1 2 3 4 5 6 7 8 9])
检查元素是否存在:
(some #{5} [1 2 3 4 5 6 7 8 9])
这是有效的,因为当一个集合被用作一个参数的函数时,它 return 如果它在集合内部,它就是参数。在删除示例中,元素 3
和 5
使集合成为 return 一个 truthy 值:他们自己。 keep
和 some
示例都会发生同样的事情,除了 some
示例具有 returning 集合中第一个元素的额外好处,该元素也在放。