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})}