Home >Backend Development >Python Tutorial >How Can I Efficiently Remove Consecutive Duplicate Elements from a Python List?
Removing Elements with Consecutive Duplicates
A common task in data processing is eliminating consecutive duplicates from a list. A straightforward Python implementation might be:
list = [1,1,1,1,1,1,2,3,4,4,5,1,2] i = 0 while i <p>This approach removes repeated elements, resulting in an output like [1, 2, 3, 4, 5, 1, 2].</p><p><strong>Eliminating Elements Whose Values Repeat Consecutively</strong></p><p>However, an improved goal is to remove entire elements whose values repeat consecutively, resulting in an output like [2, 3, 5, 1, 2]. The previous approach can be modified:</p><pre class="brush:php;toolbar:false">list = [1,1,1,1,1,1,2,3,4,4,5,1,2] i = 0 dupe = False while i <p>While functional, this approach could be simplified.</p><p><strong>A More Elegant Solution</strong></p><p>Python provides more expressive tools for list manipulation. Using itertools.groupby:</p><pre class="brush:php;toolbar:false">L = [1,1,1,1,1,1,2,3,4,4,5,1,2] from itertools import groupby [key for key, _group in groupby(L)]
This yields the desired output: [1, 2, 3, 4, 5, 1, 2].
For the second part of the task:
[k for k, g in groupby(L) if len(list(g)) <p>This uses groupby to group consecutive duplicates and filters out groups with more than one element, effectively removing the duplicated elements.</p><p>If desired, you can avoid creating a temporary list by using a generator expression:</p><pre class="brush:php;toolbar:false">[k for k, g in groupby(L) if sum(1 for i in g)
The above is the detailed content of How Can I Efficiently Remove Consecutive Duplicate Elements from a Python List?. For more information, please follow other related articles on the PHP Chinese website!