Я пытаюсь создать рекурсивный генератор, но я явно ничего не вижу. В основном у меня есть список положительных и отрицательных значений для конкретных измерений гистограммы, и вы хотите получить каждую комбинацию положительных и отрицательных. Ex:Рекурсивный генератор Python
input = [[-1,2],[-3,4],[-5,6]]
И результат мне нужно (хотя я хочу, чтобы это как генератор вместо списка, но вы получите идею):
output = [[-1, -3, -5],[-1, -3, 6],[-1, 4, -5],[-1, 4, 6],[2, -3, -5],[2, -3, 6],[2, 4, -5],[2, 4, 6]]
я сумел сделать это , но только путем добавления элементов в глобальный список внутри моей рекурсии, но я действительно надеялся, что смогу просто сделать это с генератором и перебрать мою функцию, поскольку это сделает его настолько чистым ИМО.
Вот что я сейчас:
def combs(idx,array,current=[]):
for item in array[idx]:
current_copy = current[:]
current_copy.append(item)
if idx + 1 < len(array):
combs(idx+1,array,current_copy)
else:
print current_copy
# yield current_copy
Это напечатает именно то, что я хочу, но когда я пытаюсь изменить шрифт на выход и цикл по функции она не работает. (Например)
for item in combs(0,input,[]):
print item
Пожалуйста, избегайте вызова переменных с именами функций ('input' в этом случае), это даст вам головные боли –