Python | Eliminar duplicados consecutivos de la lista

En Python, generalmente deseamos eliminar los elementos duplicados, pero a veces, para varios casos de uso específicos, necesitamos eliminar solo los elementos repetidos en sucesión. Esta es una tarea bastante fácil y tener una forma abreviada de hacerlo puede ser útil. Analicemos ciertas formas en que se puede realizar esta tarea.

Método n.º 1: Usar la groupby()comprensión de lista +
Usando la función groupby, podemos agrupar los elementos que aparecen juntos como uno solo y podemos eliminar todos los duplicados en sucesión y solo dejar que un elemento esté en la lista.

# Python3 code to demonstrate 
# removing consecutive duplicates
# using groupby() + list comprehension
from itertools import groupby 
  
# initializing list
test_list = [1, 4, 4, 4, 5, 6, 7, 4, 3, 3, 9]
  
# printing original list
print ("The original list is : " + str(test_list))
  
# using groupby() + list comprehension
# removing consecutive duplicates 
res = [i[0] for i in groupby(test_list)]
  
# printing result 
print ("The list after removing consecutive duplicates : " +  str(res))
Producción:

The original list is : [1, 4, 4, 4, 5, 6, 7, 4, 3, 3, 9]
The list after removing consecutive duplicates : [1, 4, 5, 6, 7, 4, 3, 9]

 
Método n.º 2: uso zip_longest()de la comprensión de lista +
Esta función se puede usar para mantener el elemento y eliminar los elementos sucesivos con el uso de cortes. La función zip_longest hace la tarea de juntar los valores en una lista.

# Python3 code to demonstrate 
# removing consecutive duplicates
# using zip_longest()+ list comprehension
from itertools import zip_longest
  
# initializing list
test_list = [1, 4, 4, 4, 5, 6, 7, 4, 3, 3, 9]
  
# printing original list
print ("The original list is : " + str(test_list))
  
# using zip_longest()+ list comprehension
# removing consecutive duplicates 
res = [i for i, j in zip_longest(test_list, test_list[1:])
                                                if i != j]
  
# printing result 
print ("List after removing consecutive duplicates : " +  str(res))
Producción:

The original list is : [1, 4, 4, 4, 5, 6, 7, 4, 3, 3, 9]
List after removing consecutive duplicates : [1, 4, 5, 6, 7, 4, 3, 9]

Publicación traducida automáticamente

Artículo escrito por manjeet_04 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *