Как работает «yield» в этом генераторе перестановок?
def perm_generator(lst):
if len(lst) == 1:
yield lst
else:
for i in range(len(lst)):
for perm in perm_generator(lst[:i] + lst[i+1:]):
yield [lst[i]] + perm
Этот код вызывает у меня проблемы, так как я не понимаю, какyield
s соединяются друг с другом. Я понимаю, чтоyield
действует какreturn
, но он временно останавливается, пока не будет вызван снова. Как это сделатьyield
с работой?