有没有一种方法可以在Python中为issubset定义比较函数

时间:2020-04-03 21:22:50

标签: python set

我想使用一个近似比较来检查两组是否相等。 更确切地说,如果两组上有近似元素的双射。

作为一个玩具示例,请考虑以下功能

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的数学定义。尽管如此。有吗?

1 个答案:

答案 0 :(得分:2)

为了保持这些比较的效率,您可能需要考虑备用的基础数据结构,例如“间隔树”。

位于https://github.com/AlexandreDecan/portion的Python portion库可以在这里为您提供帮助。

将集合中的每个元素定义为间隔大小为[x - 0.1, x + 0.1]的元素,并查找两个集合之间的交集:https://github.com/AlexandreDecan/portion#interval-operations