PEHDOM
Естественно, это частное решение
PEHDOM
Представте, более общую картину
Что за чушь! Все решения - это частный случай. Даже если оно и выглядит более обобщенным.
Например, (упс! Пример уже частный случай! ) MR_Magnus предполагает, что в директории находятся только картинки(это частный случай), а не какие-то zip, txt или что-то там еще. При этом его явно интересуют картинки. Это видно из его кода.
Дальше, а что, если файл img.jpg это текстовый файл или вообще исполняемый? Если картинки будут дальше где-то использоваться, могут быть сюрпризы.
А теперь общий случай, кстати он у вас, звучит так: “нет решения, нет вашего кода”. И он подходит для любой задачи, для любого языка а не только python, для любого форума, места и времени. Его можно применять везде, где нужно решение)))
Насчет постановки задачи, она поставлена довольно таки не плохо и ясно.
Дано что поступает на вход и что должно быть на выходе. ЯП известен, что еще нужно? Если не нравится формулировка задачи, предложите свою. MR_Magnus, думаю, примет к сведению а возможно и кто-то еще на форуме, и будут правильно ставить вопросы. А так, “мне не нравится формулировка задачи” это не о чем, нужен правильный пример.
Кстати, MR_Magnus, неплохо себя себя показал, код в тегах, название темы соответствует, постановка задачи меня устраивает, плюс он не сидел и ждал когда ему решат а продолжал искать решение сам. Если взять “общую температуру по больнице”, то было бы не плохо если все новобранцы на форуме начинали с этого уровня.
Вернемся к делу, я написал решение, которое решало поставленную задачу. Дальше просто его нужно довести до некоторого подходящего варианта, в вашей формулировке “обобщить”. Самим слабо это сделать, вы же типа программисты, что за дела? Например, вот так:
#
imagelist = [ 'Oak.jpg', 'WoodFine01.jpg', 'WoodFine01_DISP.jpg', 'WoodFine01_NRM.jpg', 'WoodFine01_SPEC.jpg', 'WoodFine02.jpg', 'WoodFine02_DISP.jpg', 'WoodFine02_NRM.jpg', 'WoodFine02_SPEC.jpg', 'WoodFine03.jpg', 'WoodFine03_DISP.jpg', 'WoodFine03_NRM.jpg',
'WoodFine03_SPEC.jpg', 'WoodFine04.jpg', 'WoodFine04_DISP.jpg', 'WoodFine04_NRM.jpg', 'WoodFine04_SPEC.jpg', 'WoodFine05.jpg', 'WoodFine05_DISP.jpg', 'WoodFine05_NRM.jpg', 'WoodFine05_SPEC.jpg', 'WoodFlooring042_COL_4K.jpg', 'WoodFlooring042_DISP16_4K.tif']
def get_roots(files):
roots = []
for ifile in files:
file_name = ifile.split('.')[0]
root = file_name.split('_')[0]
roots.append(root)
return list(set(roots))
def get_files_with_root(files, root):
files_with_root = []
for ifile in files:
if ifile.startswith(root):
files_with_root.append(ifile)
return files_with_root
def show(lists):
for lst in lists:
print(lst)
def main():
ready_list = []
roots = get_roots(imagelist)
for root in roots:
ready_list.append(get_files_with_root(imagelist, root))
show(ready_list)
main()
MR_Magnus плохо использовать имена переменных, как у встроенных в python функций. Я про set. Еще есть len, min, max, next, continue и т.д.