You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Clojure中移除列表元素?我的代码输出不符合预期

问题分析与修正

你的代码问题出在**(list x)**这一步:当你传入参数'(w x y z)给x时,(list x)会把这个列表再包裹一层,变成'((w x y z))。此时remove #{y}作用在这个外层列表上,外层列表的唯一元素是整个原列表,和你要移除的'w不匹配,所以没有任何元素被移除,最终输出就是外层的嵌套列表。

修正后的代码很简单,直接把(list x)换成x即可:

(defn removeLetter [x y]
  (remove #{y} x))

(println (removeLetter '(w x y z) 'w))

如果需要确保返回的是列表类型(因为remove返回的是惰性序列),可以用into转换成列表:

(defn removeLetter [x y]
  (into '() (remove #{y} x)))

(println (removeLetter '(w x y z) 'w))

两种写法的输出都会是(x y z),符合你的预期。

内容的提问来源于stack exchange,提问作者user20166753

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 07:35:21