¿Cómo funciona el 'rendimiento' en este generador de permutación?
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
Este código me ha estado molestando, ya que no entiendo cómoyield
s se conectan entre sí. Mi entendimiento fue queyield
actúa como unreturn
, pero se detiene temporalmente hasta que se vuelva a llamar. Como estasyield
s trabajo?