Avertissement: Cette question concerne moi et j'espère que d'autres personnes comprendront mieux Python. Mon problème peut être résolu facilement en plusieurs lignes, je le sais. Supposons que j'ai deux fonctions f (x), g (x, y) pour que je puisse calculer le tuple (f (x), g (x, f (x))) en fonction de x. Je veux trier une liste X par ces deux clés, mais calculer f (x) est cher donc je ne veux le faire qu'une seule fois par x. Ma solution actuelle est:Python One-Liner: Tri par plusieurs clés interdépendantes
X_s = sorted(X , key = lambda x: (lambda y: (y , g(x,y)))(f(x)))
Puis-je obtenir la même chose sans utiliser deux fonctions lambda?
J'ai essayé de répondre à cela plusieurs fois, mais je finis par me perdre. Il semble impossible de faire ce que vous voulez avec un seul lambda. Python n'a pas de mémo, comme Haskell, donc vous aurez besoin d'un lambda pour calculer f et un autre pour calculer h (x) = (f (x), g (x, f (x)) – saulspatz
C'est juste ce que je pensais Merci pour l'essai honorable –
vous devriez toujours accepter une réponse – BlueTrin