Вы можете получить значение, которое было отправлено по присваиванию в отчете о доходах.
как:
received = yield something
Для вашего использования вам нужны дополнительные знания, которые вы можете получить от другого генератора с помощью оператора yield from
. в вашем случае вам нужно что-то вроде этого:
def permute(items):
permu_list = [perm for perm in pr(items)]
permu_list.sort()
for x in permu_list:
l = yield x
if l:
yield from permute(l)
break
В строке с l = yield x
я получу все, что было отправлено этому генератору, если вы просто позвоните следующему на генератор, который вы получите None
здесь, поэтому я написал оператор if, чтобы проверить, является ли это значением None
или это то, что происходит из метода отправки генератора.
После этого я создаю и использую другой генератор из той же функции генератора, которую мы получили. С помощью permute(l)
я создаю новый генератор, а с помощью yield from
я отправляю выходные данные этого генератора как выходные данные, и после этого я не хочу продолжать генерировать перестановку из первого списка, поэтому я разрываю цикл.
Для получения дополнительной информации вы можете проверить эту статью, разделенную на две части .