2011-08-11 17 views

Respuesta

26
[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))] 
+0

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

+1

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

+3

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. –

Cuestiones relacionadas