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