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)