[英]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.