下面是一個簡單的函數,可以在保留順序的同時刪除列表中的重複項。我試過了,它確實有效,所以這裏的問題是我的理解。在我看來,第二次運行給定物品的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循環。 –