检查一个集合中的元素是否存在于另一个集合中
Checking if a element of a set exists in another set
假设我有两个 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)
正在工作。
您正在寻找intersection:
>>> A = {1,2,3,4,5}
>>> B = {'a','b','c','d',5}
>>> A.intersection(B)
set([5])
实现此目的的最紧凑方法是使用 &
运算符:
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)
这两个解决方案非常相似,第二个很可能面临方法调用的开销。
假设我有两个 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)
正在工作。
您正在寻找intersection:
>>> A = {1,2,3,4,5}
>>> B = {'a','b','c','d',5}
>>> A.intersection(B)
set([5])
实现此目的的最紧凑方法是使用 &
运算符:
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)
这两个解决方案非常相似,第二个很可能面临方法调用的开销。