首頁 >後端開發 >Python教學 >如何在保持順序的同時有效率地對列表列表進行去重?

如何在保持順序的同時有效率地對列表列表進行去重?

Barbara Streisand
Barbara Streisand原創
2024-11-23 15:24:25614瀏覽

How Can I Efficiently Deduplicate a List of Lists While Maintaining Order?

從列表列表中有效刪除重複項

給定一個列表列表,目標是在保持順序的同時消除重複元素。雖然將列表轉換為元組以利用集合很簡單,但效率很低。

利用itertools.groupby()

itertools 提供了一個優秀的解決方案:

import itertools

k.sort()
list(k for k,_ in itertools.groupby(k))

這個方法很擅長:

  • 這種方法很擅長:
  • 對清單進行排序以對齊重複項。

根據元素將清單分組,每組由其第一次出現代表。

將群組鍵(刪除重複)轉換回清單。

基準分析

廣泛的基準測試表明,對於大型輸入列表,「groupby」通常優於其他方法。但是,對於重複項很少的小列表,「循環」方法可能會稍微快一些。
  • 針對特定應用程式進行最佳化當效能至關重要時,請考慮:
  • 啟發式輸入分析:
  • 偵測輸入特徵以指導演算法選擇。
  • 替代資料結構:
  • 評估一組元組是否更適合資料的表示。
機率建模:分析重複項的分佈以最佳化效能指標。

以上是如何在保持順序的同時有效率地對列表列表進行去重?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn