list - 如何在clojure中比较两个列表的元素

标签 list clojure

我想比较 clojure 中的两个列表,

(def a '(1 2 3 4 5))
(def b '(3 2 7 8 10))

得出结果 (2 3) 或 (3 2)
通过比较两个列表的元素。
(defn compareList[x, y]
  (do
   (def result '())
   (def i 0)
   (def j 0)
   (while (< i 5) 
     (while (< j 5)
       (if (= (nth x i) (nth y j)) 
         (def result (conj (nth x i) result)))
       (def j (inc j))
     )
   )
   result))


(print (compareList a b))

这是我的代码。
但结果是()。我错在哪里?请帮忙。

最佳答案

使用 set 更适合您的情况

(clojure.set/intersection #{1 2 3 4 5} #{3 2 7 8 10})

这将输出 #{2 3}

关于list - 如何在clojure中比较两个列表的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33628109/

相关文章:

c# - 维护内存的可重用列表

clojure - 为什么 Lisp 允许替换 let 中的数学运算符?

scala - 如何访问 Scala REPL 中的最后结果?

dictionary - 在 map 中反向查找

clojure - 如何附加到 Clojure 原子中的嵌套列表?

python - 将属性添加到类列表以返回具有特定属性的所有对象

python - 返回列表的所有 "positions"

python - 使用带有附加参数的 map - python

python - 使用嵌套列表/嵌套循环

clojure - 为具有跨层约束的嵌套数据结构创建 Clojure 规范生成器