Como o 'rendimento' funciona neste gerador de permutação?
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
Esse código está me incomodando, pois não entendo como oyield
s se conectam. Meu entendimento era queyield
age como umreturn
, mas para temporariamente até que seja chamado novamente. Como estesyield
trabalho?