Merci pour cette réponse. Pour essayer de comprendre ce que fait python, j'ai décomposé de la manière suivante:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| def product(my_list, n):
if n == 1:
return [(i,) for i in my_list]
liste=[]
for j in my_list:
print('n',n)
print('product',product(my_list, n - 1))
for k in product(my_list, n - 1):
print('k',k)
u=(j,)+k
print('u',u)
liste.append(u)
print('liste',liste)
return liste |
Ce que je comprends :
n démarre à 3, puis passe à 2.
la fonction produit alors la liste dans le cas n=1, c'est à dire [(1,),(2,),(3,)]
la boucle ajoute à ce que j'appelle "liste" les éléments (1,1),(1,2) et (1,3)
ensuite, je vois que n prends la valeur 2, et là je suis largué. Je n'arrive pas à comprendre le cheminement de ce n.
J'essaye quand même de continuer, et je vois que ma "liste" s'agrandit de tous les tuples de 2 éléments. Là où je ne comprends plus du tout, c'est qu'il semble qu'à ce stade, la liste est vidée de son contenu sauf le tuple (1,1).
Bon, je vais essayer de me pencher la dessus davantage, mais c'est vraiment pas évident de comprendre la récursivité.
Partager