Есть одна задача и решается она рекурсивным перебором. Вкратце так - на вход поступает одна строка, а на выходе большое множество строк (все возможные комбинации). Подробнее объяснять не буду, незачем, а если кому вдруг интересно - можете почитать мои предыдущие треды, там это можно найти.
Так вот... рекурсивный перебор я сделал. Вот кусок кода:
def backtrack(currentBytes, k):
if k == l - 1:
for x in table[s1[k]]:
print(currentBytes + x + b'\n')
return
elif k < l - 1:
for x in table[s1[k]]:
backtrack(currentBytes + x, k + 1)
backtrack(b'', 0)
В общем, суть такова - backtrack - рекурсивная функция, которая и перебирает все возможные комбинации. В строке, где вызывается print() и выводится очередная результативная строка... выводится в стандартный поток или в файл, не важно. После вывода (он в цикле) осуществляется возврат.
Так вот... мне бы хотелось переделать эту функцию так, чтобы вместо вывода (в файл, в стандартный поток или ещё куда), чтобы она стала генератором. То есть, чтобы сразу при выводе она не вычислялась полностью, а только на один шаг... ну что такое генераторы, думаю, python-гуру знают =)
Пробовал заменить print() на yield - но это не помогло... Как всё-таки правильно сделать? %)