在Python中设置一个递归函数来计算包含排除

2024-04-20 13:42:51 发布

您现在位置:Python中文网/ 问答频道 /正文

对于那些不熟悉的人,包含-排除原则规定了一种方法,可以在不重复计算的情况下确定相交集的并集的并集的值。简而言之,如果你有两个集合A,B,它们相交,可以通过将两个集合的值相加,然后减去它们的交集来计算它们的并集值,以避免重复计算。在

换句话说

 $/mu(A /union B) = /mu(A) + /mu(B) - /mu(A /intersection B)$.  

这可以扩展到任何有限个集合,甚至无限个集合。如何在Python中构造一个利用这一原理的递归函数呢?在


Tags: 方法利用情况原理union原则muintersection
2条回答

一般来说,你不会用派。如果你想要工会的规模,就拿工会来说:

def union_size(sets):
    return len(set.union(*sets))

PIE在组合数学中更有用,你可能有一组2百万个元素,一组3个百万元素,还有一种方法可以告诉你它们的交集包含1百万个元素,而不需要逐个遍历所有元素。但是,在编程中,您不能使用对集合进行编码的紧凑表达式。你的记忆里有五百万个元素。要想让两组元素相交,就需要检查每一个元素是否在另一组元素中。馅饼没有好处。在

如果您想使用它,最简单的方法是使用itertools

^{pr2}$

只需使用集合。在

AuB = set(A).union(B)
len(AuB)

你也可以使用集合交集如果你想要一个。在

^{pr2}$

(我假设A和B在最后一行没有重复项)

相关问题 更多 >