繁体   English   中英

检查一个向量是否包含来自另一个向量的至少一个值

[英]Check if one vector contains at least one value from another vector

如果我有两个向量:

(def moo [:a :b :c :d])

(def foo [:a :z :d :e :f :g])

什么是检查moo是否包含至少一个同样在foo中的值的最简单(规范)方法。 在这种情况下,它将返回'true',因为:a和:d出现在foo中。

其次:如果foo包含moo的所有元素(但允许包含其他元素),是否有可能进一步优化以返回true

我会这样做:

对于第一个问题:

(some (set moo) foo)

如果找到moo存在的第一个foo

对于第二个:

(every? (set foo) moo)

检查foo是否包含moo每个项目

这将返回一个布尔值,告诉您是否有共享元素:

(empty? (clojure.set/intersection (set moo) (set foo)))

这将告诉您交集是否包含moo中的所有项目:

(= (count moo) (count (clojure.set/intersection (set moo) (set foo))))

moo在foo中包含一个元素:

(seq (clojure.set/intersection (set moo) (set foo)))

foo包含moo的所有元素:

(empty? (clojure.set/difference (set moo) (set foo)))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM