首頁 > 後端開發 > Python教學 > 在Python中,我們如何有效地從清單中刪除連續的重複項,同時保留唯一元素?

在Python中,我們如何有效地從清單中刪除連續的重複項,同時保留唯一元素?

DDD
發布: 2024-12-11 19:12:12
原創
123 人瀏覽過

How Can We Efficiently Remove Consecutive Duplicates from a List While Preserving Unique Elements in Python?

消除連續的重複元素並保留不同的元素

使用清單時,通常需要消除連續的重複元素。問題出現了:我們如何在保留不同元素的同時有效地刪除這些元素?

一種方法是迭代列表,將每個元素與其後繼元素進行比較。如果它們相同,我們刪除目前元素。這種方法雖然實用,但效率相對較低,缺乏 Python 的優雅。

使用 GroupBy 優雅地去除重複

Python itertools 模組提供了一個名為 groupby 的強大函數,可以有效地將連續元素分組。透過使用groupby,我們可以用更少的程式碼行和更高的清晰度來實現我們的目標。

對於問題的第一部分(尋找唯一元素),我們可以使用groupby對連續元素進行分組,然後選擇鍵(代表獨特元素)。

from itertools import groupby

L = [1,1,1,1,1,1,2,3,4,4,5,1,2]
unique_elements = [key for key, _group in groupby(L)]
登入後複製

輸出:

[1, 2, 3, 4, 5, 1, 2]
登入後複製

保留獨特性使用Sum 的元素

為了進一步完善解決方案,我們需要消除具有連續解決方案重複項的元素。 groupby 再次為我們提供協助。透過檢查每個組的長度,我們可以確定某個元素是否不同。

distinct_elements = [k for k, g in groupby(L) if len(list(g)) < 2]
登入後複製

輸出:

[2, 3, 5, 1, 2]
登入後複製

或者,我們可以使用生成器表達式來避免建立每個群組的臨時列表,而不是計算生成器的總和:

distinct_elements = [k for k, g in groupby(L) if sum(1 for i in g) < 2]
登入後複製

這提供了更緊湊、更有效率的解決方案實現,有效消除連續的重複項,同時保留不同的元素。

以上是在Python中,我們如何有效地從清單中刪除連續的重複項,同時保留唯一元素?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板