def generate(n):
return lambda x: [x + i for i in range(n)]
f1 = generate(3)
f2 = generate(2)
print(f1(5), f2(f1(2)[1]))
Solution : a) [5, 6, 7] [4, 5]
Explication détaillée :
Étape 1 : Création des fonctions
f1 = generate(3) → retourne lambda x: [x + i for i in range(3)]
f2 = generate(2) → retourne lambda x: [x + i for i in range(2)]
Étape 2 : Calcul de f1(5)
f1(5) = [5 + i for i in range(3)]
range(3) = 0, 1, 2
- Calcul : 5+0=5, 5+1=6, 5+2=7
- Résultat : [5, 6, 7]
Étape 3 : Calcul de f1(2)
f1(2) = [2 + i for i in range(3)]
- Calcul : 2+0=2, 2+1=3, 2+2=4
- Résultat : [2, 3, 4]
f1(2)[1] = élément à l'indice 1 = 3
Étape 4 : Calcul de f2(f1(2)[1]) = f2(3)
f2(3) = [3 + i for i in range(2)]
range(2) = 0, 1
- Calcul : 3+0=3, 3+1=4
- Résultat : [3, 4]
Résultat final : [5, 6, 7] [3, 4]
Mais attention ! Je vois une erreur dans mon raisonnement. Regardons de plus près :
print(f1(5), f2(f1(2)[1]))
f1(2)[1] = 3
f2(3) = [3+0, 3+1] = [3, 4]
Donc la bonne réponse est b) [5, 6, 7] [3, 4]