從清單中刪除重複項時保留順序
從清單中刪除重複元素同時保持原始順序可能是一個挑戰,因為使用消除重複的集合通常會破壞初始序列。
為了解決這個問題,Python 社群開發了各種內建和慣用的解決方案。最有效的選項之一是稱為f7 的函數,它利用一組來有效地檢測和刪除重複項:
def f7(seq): seen = set() seen_add = seen.add return [x for x in seq if not (x in seen or seen_add(x))]
此函數使用名為see 的集合來快速識別和刪除重複項。秘密優化在於將 saw.add 作為局部變數分配給 saw_add 。這會阻止 Python 在每次迭代時動態解析 saw.add,這可能會因為 saw.add 可能發生變更而導致效能下降。
其他替代方案,例如 ActiveState 中的有序集資料結構,包括如果您預期在相同資料集上執行頻繁的重複刪除操作,也可以使用。
必須注意,在提供的程式碼中,seen.add() 總是傳回 None,因此需要使用邏輯或運算子作為觸發集合更新的方法。
以上是在 Python 中如何在保留順序的同時有效地從清單中刪除重複項?的詳細內容。更多資訊請關注PHP中文網其他相關文章!