消除連續的重複元素並保留不同的元素
使用清單時,通常需要消除連續的重複元素。問題出現了:我們如何在保留不同元素的同時有效地刪除這些元素?
一種方法是迭代列表,將每個元素與其後繼元素進行比較。如果它們相同,我們刪除目前元素。這種方法雖然實用,但效率相對較低,缺乏 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中文網其他相關文章!