list - 如何在 Clojure 中计算列表交集?
问题描述
我需要一个函数,它需要两个列表,例如 (1 2 3 4) 和 (2 3 4 5),并返回它们的交集,即 (2 3 4)。我编写了一个有效的函数,但它有 8 行长,而且非常“不像 Clojure”,因为我对这项运动很陌生。我知道那里有一些优雅的东西,地狱,甚至可能是解决整个问题的 Clojure 关键字。比较只需要在顶层进行,而不是在整个列表结构中递归。先感谢您。
解决方案
如果您不介意结果集的顺序,则可以使用内置库进行集合操作。
(require '[clojure.set :as set])
(set/intersection (set '(1 2 3 4) ) (set '( 3 4 5))) ; ==> returns #{4 3}
推荐阅读
- swift - 聊天视图中的白色矩形空间
- android - 找不到builder-7.0.0-alpha09.jar
- javascript - 如何从 chrome 扩展程序创建隐身标签
- swagger - 如何为 url 构建路径和响应对象
- python - 使用 Python 接收外国 UDP 广播
- python - Python异步调用常规函数
- python - 如何在python中截断日期时间并将wrt截断为postgresql?
- html - Bootstrap 5列网格宽度
- xamarin - Xamarin Android Designer 不显示
- javascript - 如何检测具有重复字符的子字符串?