Python: encuentre secuencias numeradas incrementales con una lista de comprensión

Tengo una secuencia de números en una lista y estoy buscando una solución elegante, preferiblemente lista para comprender, para obtener las secuencias individuales (incluidos los valores individuales). He resuelto este pequeño problema pero no es muy pythonic.

La siguiente lista define una secuencia de entrada:

input = [1, 2, 3, 4, 8, 10, 11, 12, 17] 

La salida deseada debe ser:

 output = [ [1, 2, 3, 4], [8], [10, 11, 12], [17], ] 

 >>> from itertools import groupby, count >>> nums = [1, 2, 3, 4, 8, 10, 11, 12, 17] >>> [list(g) for k, g in groupby(nums, key=lambda n, c=count(): n - next(c))] [[1, 2, 3, 4], [8], [10, 11, 12], [17]] 

Pythonic significa código simple y directo, y no de una sola línea.

 def runs(seq): result = [] for s in seq: if not result or s != result[-1][-1] + 1: # Start a new run if we can't continue the previous one. result.append([]) result[-1].append(s) return result print runs([1, 2, 3, 4, 8, 10, 11, 12, 17])