我想使用一个近似比较来检查两组是否相等。 更确切地说,如果两组上有近似元素的双射。
作为一个玩具示例,请考虑以下功能
def my_compare(a, b):
ep = 0.1
return a>=b-ep and a<=b+ep
我想做类似的事情
a = {1, 2, 3}
b = {1.05, 2, 3}
c = {1.2, 2, 3}
print(a.issubset(b) and b.issubset(a))
print(a.issubset(c) and c.issubset(a))
有输出
True
False
PS:我知道我这样做是在颠覆set的数学定义。尽管如此。有吗?
答案 0 :(得分:2)
为了保持这些比较的效率,您可能需要考虑备用的基础数据结构,例如“间隔树”。
位于https://github.com/AlexandreDecan/portion的Python portion
库可以在这里为您提供帮助。
将集合中的每个元素定义为间隔大小为[x - 0.1, x + 0.1]
的元素,并查找两个集合之间的交集:https://github.com/AlexandreDecan/portion#interval-operations