首页 > 解决方案 > 检查一个集合的元素是否存在于另一个集合中

问题描述

假设我有两个 pyomo 集 A 和 B,它们包含以下元素:

m.A = {1,2,3,4,5}
m.B = {a,b,c,d,5}

我想检查;如果 A 有一些也在 B 中的元素:

编辑:

那么以下不起作用

if m.A & m.B is not None:
    raise ValueError

至少在我的情况下m.A = [None]m.B = ['some_string']if 语句也被触发,但bool(m.A & m.B)正在工作。

标签: setelementspyomo

解决方案


您可以实现此目的的最紧凑的方法是使用&运算符

a = {1,2,3,4}
b = {4,5,6}
result = bool(a & b)

速度比较

使用&运算符:

%timeit bool(a & b)
297 ns ± 3.04 ns per loop (mean ± std. dev. of 7 runs, 1000000 loops each)

使用intersection方法:

%timeit bool(a.intersection(b))
365 ns ± 27.1 ns per loop (mean ± std. dev. of 7 runs, 1000000 loops each)

这两种解决方案非常相似,第二种解决方案很可能面临方法调用的开销。


推荐阅读