Como listar uma sequência de imagens de maneira eficiente? Comparação de sequência numérica em Python

Eu tenho um diretório de 9 imagens:

image_0001, image_0002, image_0003
image_0010, image_0011
image_0011-1, image_0011-2, image_0011-3
image_9999

Eu gostaria de poder listá-los de maneira eficiente, assim (4 entradas para 9 imagens):

(image_000[1-3], image_00[10-11], image_0011-[1-3], image_9999)

Existe uma maneira em python, para retornar um diretório de imagens, de forma curta / clara (sem listar todos os arquivos)?

Então, possivelmente algo como isto:

listar todas as imagens, classificar numericamente, criar uma lista (contando cada imagem em sequência desde o início). Quando uma imagem estiver faltando (crie uma nova lista), continue até a lista de arquivos original estar concluída. Agora eu deveria apenas ter algumas listas que contêm sequências não quebradas.

Estou tentando facilitar a leitura / descrição de uma lista de números. Se eu tivesse uma sequência de 1000 arquivos consecutivos, poderia ser claramente listado como arquivo [0001-1000] em vez de arquivo ['0001', '0002', '0003' etc ...]

Edit1(com base na sugestão): Dada uma lista achatada, como você derivaria os padrões glob?

Edit2 Estou tentando dividir o problema em pedaços menores. Aqui está um exemplo de parte da solução: data1 funciona, data2 retorna 0010 como 64, data3 (os dados do mundo real) não funciona:

# Find runs of consecutive numbers using groupby.  The key to the solution
# is differencing with a range so that consecutive numbers all appear in
# same group.
from operator import itemgetter
from itertools import *

data1=[01,02,03,10,11,100,9999]
data2=[0001,0002,0003,0010,0011,0100,9999]
data3=['image_0001','image_0002','image_0003','image_0010','image_0011','image_0011-2','image_0011-3','image_0100','image_9999']

list1 = []
for k, g in groupby(enumerate(data1), lambda (i,x):i-x):
    list1.append(map(itemgetter(1), g))
print 'data1'
print list1

list2 = []
for k, g in groupby(enumerate(data2), lambda (i,x):i-x):
    list2.append(map(itemgetter(1), g))
print '\ndata2'
print list2

retorna:

data1
[[1, 2, 3], [10, 11], [100], [9999]]

data2
[[1, 2, 3], [8, 9], [64], [9999]]

questionAnswers(3)

yourAnswerToTheQuestion