Saltar al contenido

Eliminar elementos que tienen duplicados consecutivos

Solución:

>>> L = [1,1,1,1,1,1,2,3,4,4,5,1,2]
>>> from itertools import groupby
>>> [x[0] for x in groupby(L)]
[1, 2, 3, 4, 5, 1, 2]

Si lo desea, puede utilizar el mapa en lugar de la lista de comprensión

>>> from operator import itemgetter
>>> map(itemgetter(0), groupby(L))
[1, 2, 3, 4, 5, 1, 2]

Para la segunda parte

>>> [x for x, y in groupby(L) if len(list(y)) < 2]
[2, 3, 5, 1, 2]

Si no desea crear la lista temporal solo para tomar la longitud, puede usar sum sobre una expresión generadora

>>> [x for x, y in groupby(L) if sum(1 for i in y) < 2]
[2, 3, 5, 1, 2]

Oneliner en Python puro

[v for i, v in enumerate(your_list) if i == 0 or v != your_list[i-1]]

Si usa Python 3.8+, puede usar la expresión de asignación :=:

list1 = [1, 2, 3, 3, 4, 3, 5, 5]

prev = object()
list1 = [prev:=v for v in list1 if prev!=v]

print(list1)

Huellas dactilares:

[1, 2, 3, 4, 3, 5]
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

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