У меня есть три условия: условие перехода, истинное условие и ложное условие.
- Я хочу сохранить порядок входов.
- Один список содержит переходы для каждого входа, другой список содержит истинные условия для каждого входа,и третий список содержит ложные условия для каждого входа.
- Я хочу прокрутить элементы в
t_list
и вывести другие входные данные из p_list
или n_list
, но не вход, который находится в процессе перехода. - Если логика
'OR'
Я хочу использовать n_list
, иначе - если логика 'AND'
Я хочу использовать p_list
.
t_list = ['Input 1 transitions to true', 'Input 2 transitions to true', 'Input 3 transitions to true']
p_list = ['Input 1 is true', 'Input 2 is true', 'Input 3 is true']
n_list = ['Input 1 is false', 'Input 2 is false', 'Input 3 is false']
I 'Я определяю метод для генерации 4-го списка для моих условий вывода.
num_inputs = len(t_List)
logic = 'OR' #or 'AND' based on prior input
def combination_generator (t_List, p_List, n_List, logic, num_inputs):
count = 0
final_array = []
temp_array = []
for item in t_List:
temp_array.append(item)
if logic == 'OR':
for item in n_List:
temp_array.append(item)
elif logic == 'AND':
for item in p_List:
temp_array.append(item)
Мое первоначальное решение использовало itertools.combinations()
следующим образом:
for x in itertools.combinations(temp_array, num_inputs):
#file.write(f'{count} {x}\n')
count+=1
final_array.append(x)
Я вручную выбрал выходную комбинацию, которую хотел добавить в свой выходной массив, на основе значения счетчика.
Мне кажется, что есть лучшее решение, возможно, со списком.
final_list = [item for item in n_List if logic == 'OR']
Идеальный выход:
'AND':
output_array = [['Input 1 transitions to true', 'Input 2 is true', 'Input 3 is true'],
['Input 1 is true', 'Input 2 transitions to true', 'Input 3 is true'],
['Input 1 is true', 'Input 2 is true', 'Input 3 transitions to true'],]
'OR':
output_array = [['Input 1 transitions to true', 'Input 2 is false', 'Input 3 is false'],
['Input 1 is false', 'Input 2 transitions to true', 'Input 3 is false'],
['Input 1 is false', 'Input 2 is false', 'Input 3 transitions to true'],]