我正在寻找一种获取元素列表的方法,其中一些元素可能是“等效的”,并且返回没有等效元素的列表。我的粗略尝试是这样的:

unique = []
for item1 in mylist:
    include = 1
    for item2 in unique:
      if are_these_equivalent(item1, item2):
        include = 0
        break        #no need to examine anymore items
    if include == 1:
      unique.append(item1)


我猜想在算法上没有什么可做的,但是感觉代码有点混乱。有什么不错的方法来美化它吗?

编辑:
我使用的等效项是两个置换是否在S_n中是共轭的,但是等效项的任何抽象(在equivalence classes的意义上)都应相同。

最佳答案

根据评论中所说的内容,这里是代码的改进和更正版本。它仅比您的原始代码更好。

unique = []
for item1 in mylist:
  for item2 in unique:
    if are_these_equivalent(item1, item2):
      break
  else:
    unique.append(item1)

关于python - 从列表中删除重复的等效类,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43713848/

10-12 22:33