python - 给定 python 中的关系,是否有一种标准方法可以将可迭代对象划分为等价类?

标签 python equivalence-classes

假设我有一个有限的可迭代XX 上的等价关系~。我们可以定义一个函数 my_relation(x1, x2) 如果 x1~x2 则返回 True 否则返回 False .我想编写一个将 X 划分为等价类的函数。也就是说,my_function(X, my_relation) 应该返回 ~ 的等价类列表。

有没有在 python 中执行此操作的标准方法?更好的是,是否有专门用于处理等价关系的模块?

最佳答案

以下函数接受一个可迭代的a 和一个等价函数equiv,并执行您的要求:

def partition(a, equiv):
    partitions = [] # Found partitions
    for e in a: # Loop over each element
        found = False # Note it is not yet part of a know partition
        for p in partitions:
            if equiv(e, p[0]): # Found a partition for it!
                p.append(e)
                found = True
                break
        if not found: # Make a new partition for it.
            partitions.append([e])
    return partitions

例子:

def equiv_(lhs, rhs):
    return lhs % 3 == rhs % 3

a_ = range(10)

>>> partition(a_, equiv_)
[[0, 3, 6, 9], [1, 4, 7], [2, 5, 8]]

关于python - 给定 python 中的关系,是否有一种标准方法可以将可迭代对象划分为等价类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38924421/

相关文章:

python : Regular expression

python - 2 组并集不包含所有项目

python - 从 xgb.train() 获取概率

python - django-sorcery 不会自动生成迁移

python - 如何从嵌套字典中查找公共(public)键值对

Python 不替换 % 符号

Python:基于交集的简单列表合并

algorithm - 在树的节点上构建等价类的良好数据结构是什么?

regex - "equivalence class"在正则表达式的上下文中是什么意思?