У меня есть каталог из 9 изображений:
image_0001, image_0002, image_0003 image_0010, image_0011 image_0011-1, image_0011-2, image_0011-3 image_9999
Я хотел бы иметь возможность перечислить их эффективным способом, например так (4 записи для 9 изображений):
(image_000[1-3], image_00[10-11], image_0011-[1-3], image_9999)
Есть ли способ в python вернуть каталог изображений коротким/четким способом (без перечисления каждого файла)?
Итак, возможно, что-то вроде этого:
перечислить все изображения, отсортировать по номерам, создать список (считая каждое изображение последовательно с самого начала). Если изображение отсутствует (создайте новый список), продолжайте, пока исходный список файлов не будет завершен. Теперь у меня должно быть несколько списков, содержащих непрерывные последовательности.
Я пытаюсь упростить чтение/описание списка чисел. Если бы у меня была последовательность из 1000 последовательных файлов, она могла бы быть четко указана как файл [0001-1000], а не как файл ['0001', '0002', '0003' и т. д...]
Изменить 1 (на основе предложения): при наличии плоского списка, как бы вы получили шаблоны глобусов?
Edit2 Я пытаюсь разбить проблему на более мелкие части. Вот пример части решения: data1 работает, data2 возвращает 0010 как 64, data3 (реальные данные) не работает:
# 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
возвращает:
data1
[[1, 2, 3], [10, 11], [100], [9999]]
data2
[[1, 2, 3], [8, 9], [64], [9999]]
image_00[10-11]
, а неimage_001[0-1]
? - person eumiro   schedule 13.10.2010os.listdir(path)
и т. д. - person Nick T   schedule 13.10.2010image_['0001', '0002', '0003', '0010', '0011', '0011-1', '0011-2', '0011-3', '9999']
- person martineau   schedule 14.10.2010'0011'
находится в последовательности['0010','0011']
или['0011', '0011-1', '0011-2', '0011-3']
? - person martineau   schedule 14.10.2010groupby
решение на строки. - person Mark Ransom   schedule 15.10.2010