【发布时间】:2016-08-12 18:33:57
【问题描述】:
假设我在X 上有一个有限可迭代X 和一个等价关系~。我们可以定义一个函数my_relation(x1, x2),如果x1~x2返回True,否则返回False。我想编写一个将X 划分为等价类的函数。也就是说,my_function(X, my_relation) 应该返回~ 的等价类列表。
在 python 中有没有标准的方法来做到这一点?更好的是,是否有专门用于处理等价关系的模块?
【问题讨论】:
-
您是否已经尝试过自己编写一些代码?你用 Google 搜索过 Python 等价类 吗?
-
如果您可以从任意值计算每个等价类的规范元素,
itertools.groupby很有用。 -
@chepner 我认为这就是问题的有趣之处 - 等价类的规范。顺便说一句,如您所知,
groupby要求对它们进行排序 - 当前公式的另一个困难。 -
定义这样一个函数当然是关键,但是同样的函数可以与
sorted函数一起使用来获得所需的顺序。 -
@chepner 但是如果有这样一个规范的键功能,那么就复杂性而言,排序是矫枉过正的,不是吗?
标签: python equivalence-classes