下面是一个简单的函数,可以在保留顺序的同时删除列表中的重复项。我试过了,它确实有效,所以这里的问题是我的理解。在我看来,第二次运行给定物品的uniq.remove(item)
时,它会返回一个错误(KeyError
或ValueError
我认为?),因为该物品已从唯一集合中删除。这不是这种情况吗?我认为这应该引发一个错误,但它不会
def unique(seq):
uniq = set(seq)
return [item for item in seq if item in uniq and not uniq.remove(item)]
我真的很喜欢这个代码=) – katrielalex
@katrielalex - 我不。使用条件去除集合中的项目和项目会导致混淆,难以阅读代码。 (恕我直言) – mgilson
另外,你正在创建一个全新的'set',并弹出它的每一项,只是作为一个列表上的过滤器。我无法想象这会更快,而且它绝对不是一次性通过(用于创建新的清单)或双通(用于就地清单清单)'for for循环。 –