Я пишу скрипт на Jython / Python для анализа изображений (используя ImageJ). Моя цель - сравнить изображения друг с другом ...
( отредактируйте для ясности: Каждый элемент в списке должен сравниваться с любым другим элементом, но самостоятельное сравнение не допускается.)
... но у меня есть определенные требования. Эти требования основаны на том, что я использую предопределенный плагин.
Например:
imagefiles = ["A", "B", "C"]
Первое: порядок имеет значение. "A"
против "B"
отличается от "B"
против "A"
.
Второе: список имеет переменный размер, основанный на вводе пользователем. В этом примере пользователь имеет 3 входных файла: A,B,C
, но код должен учитывать случаи, когда количество элементов не равно трем.
В-третьих: само сравнение не допускается. То есть: "A"
против "A"
не может произойти.
Четвертый: я бы хотел, чтобы сравнения были взаимными перед переходом к следующему элементу. Например:
"A" vs "B"
, затем "B" vs "A"
, а не "A" vs "B"
, затем "A" vs "C"
Пятое: мне в конечном итоге нужно получить доступ к элементам в форме строки (требование из-за вызова пользовательских переменных в существующий плагин).
Для ясности, сравнения должны быть сделаны:
"A" vs "B"
"B" vs "A"
"A" vs "C"
"C" vs "A"
"B" vs "C"
"C" vs "B"
Я могу создать код, который выполняет все, кроме требования FOURTH ... это сначала взаимные сравнения. Но я действительно застрял на том, как сделать порядок сравнений тем, что я хочу. Вот текущая рабочая версия, которая не соответствует моим 4-м требованиям.
from ij import IJ #using Jython scripting in the ImageJ program
imagefiles = ["A", "B", "C"]
for index, imgs in enumerate(imagefiles):
for s, secondimage in enumerate(imagefiles):
if s != index:
IJ.run("PluginFE", "element1="+imgs+" element2="+secondimage) #this calls the plugin (PluginFE) within the ImageJ program)
Я пытаюсь подумать о том, как выполнить требование порядка сравнения ... и придумываю что-то вроде этого:
for imgs in imagefiles:
for index in range(len(imagefiles)):
if index < len(imagefiles):
IJ.run("PluginFE", "element1="+imgs+"element2="+imagefiles[index+1])
но это не с ошибкой
IndexError: индекс вне диапазона: 3
Я понимаю ошибку и проблему ... Я просто не могу понять, как обойти это. Я все еще довольно новичок в кодировании, поэтому я могу упустить очевидную функцию Python!
Спасибо за любой вклад