检查一个集合中的元素是否存在于另一个集合中

oak*_*kca 2 element set pyomo

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

m.A = {1,2,3,4,5}
m.B = {a,b,c,d,5}
Run Code Online (Sandbox Code Playgroud)

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

编辑:

那么以下不起作用

if m.A & m.B is not None:
    raise ValueError
Run Code Online (Sandbox Code Playgroud)

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

Luc*_*tti 5

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

\n\n
a = {1,2,3,4}\nb = {4,5,6}\nresult = bool(a & b)\n
Run Code Online (Sandbox Code Playgroud)\n\n

速度对比

\n\n

使用&运算符:

\n\n
%timeit bool(a & b)\n297 ns \xc2\xb1 3.04 ns per loop (mean \xc2\xb1 std. dev. of 7 runs, 1000000 loops each)\n
Run Code Online (Sandbox Code Playgroud)\n\n

使用intersection方法:

\n\n
%timeit bool(a.intersection(b))\n365 ns \xc2\xb1 27.1 ns per loop (mean \xc2\xb1 std. dev. of 7 runs, 1000000 loops each)\n
Run Code Online (Sandbox Code Playgroud)\n\n

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

\n