equivalence_classes#
- equivalence_classes(iterable, relation)[源代码]#
返回的等价类
relation当应用于iterable。等价类或块由来自的对象组成
iterable它们都是等同的。它们被定义为等价的,如果relation函数返回True当传递来自该类的任何两个对象时,以及False否则的话。要定义等价关系,函数必须是自反的、对称的和可传递的。- 参数
- 返回
- 冻结集集合
表示由等价关系函数诱导的划分的冻结集集合
relation关于要素的问题iterable。返回集中的每个成员集代表分区的等价类或块。重复的元素将被忽略,因此它对
iterable成为一个set。
笔记
此函数不会检查
relation表示等价关系。您可以使用以下命令检查等价类是否提供了分区is_partition。实例
让我们
X是来自的整数集0至9,并考虑一种等价关系R在……上面X同余模上的3:这意味着两个整数x和y在……里面X在下是等价的R如果它们除以后剩下的余数相同3,即(x - y) mod 3 = 0。此关系的等价类为
{{0, 3, 6, 9}},{{1, 4, 7}},{{2, 5, 8}}:0,3,6,9都可以被整除3并留下零余数;1,4,7留下剩余部分1;同时2,5和8留下剩余部分2。我们可以通过打电话来了解这一点equivalence_classes使用X和一个函数实现R。>>> X = set(range(10)) >>> def mod3(x, y): return (x - y) % 3 == 0 >>> equivalence_classes(X, mod3) {frozenset({1, 4, 7}), frozenset({8, 2, 5}), frozenset({0, 9, 3, 6})}