que tienen una lista como¿Cómo puedo agrupar elementos equivalentes en una lista de Python?
x = [2, 2, 1, 1, 1, 1, 1, 1]
quisiera poner los números repetidos juntos como
[[2,2],[1,1,1,1,1,1]]
que tienen una lista como¿Cómo puedo agrupar elementos equivalentes en una lista de Python?
x = [2, 2, 1, 1, 1, 1, 1, 1]
quisiera poner los números repetidos juntos como
[[2,2],[1,1,1,1,1,1]]
[list(g) for k, g in itertools.groupby(iterable)]
Esto es exactamente lo que es para itertools.groupby
.
Si desea que los números no consecutivos agrupan, al igual que en el comentario de @Michal,
[list(g) for k, g in itertools.groupby(sorted(iterable))]
Buen truco. ¿Para qué funcionaría esta solución? Me refiero a los iterables de ints, floats, strings, supongo que está bien. ¿Qué hay de los iterables de sus propios objetos de clase? ¿Funcionarían si __eq__ o __hash__ se implementa? – Bogdan
Siempre y cuando se comparen iguales, funcionará; el código equivalente a la implementación está en el enlace en mi respuesta. Por lo tanto, simplemente implemente '__eq__' (y también' __hash__' porque los objetos que son iguales necesitan un hash igual) y funcionará. – agf
No necesita '__hash__' solo para que este código funcione, pero es una buena idea implementarlo para que sus objetos se puedan usar efectivamente en los dicts y sets. –
¿Qué pasa con '[2,2,1,1,1,2,2]'? ¿Debería ser '[[2,2], [1,1,1], [2,2]]' o '[[2,2,2,2], [1,1,1]]'? –