Python: j'ai pu récurer en lambda

Article référencé: [Commentaires sur Essayer de supprimer les effets secondaires et les affectations dans le problème Fizz Buzz [JavaScript, VB.Net, Python3, CommonLisp, Clojure, HSP, langage R] / 543eed9386103ec9c58c # comment-7f730579d0e5e1267525) Une doublure en Python: récursif Vous n'avez pas besoin de créer un combinateur Y compliqué, vous avez juste besoin que la fonction ait un argument qui se reçoit.

Je pensais que je ne pouvais pas écrire de récursion en lambda (à moins d'avoir fait quelque chose de spécial), mais je le peux. Je ne savais pas ça. Non, je pense que je passais par mon cerveau parce que je ne pouvais pas le comprendre même si je le lisais.

J'ai écrit moi-même le revêtement de sol en me référant à l'article.

do = pack_to_tuple = lambda *x : x
case = unpack_and_evaluate_in_order_then_return_last = lambda x : x[-1]
otherwise = True

f = ( lambda x :
        case(     x == 0   and do( 1 )
              or otherwise and do( x * f( x - 1 ) )
             )
    )

f2 = ( lambda x :
       ( lambda f : f( f,  x ) ) ( lambda f, x :
                                     case(     x == 0   and do( 1 )
                                           or otherwise and do( x * f(f,  x - 1 ) )
                                         )
                                 )
     )

print(f(10), f2(10))

python


#résultat
3628800 3628800

Il fait la même chose que la fonction supérieure `f``` et la fonction inférieure` `f2 `. Le supérieur est normalement récursif. Je fais généralement cela et je comprends. Et le fond, c'est un peu difficile ... Avez-vous l'impression de créer une fonction qui renvoie le multiplicateur avec une récursivité anonyme et de la nommer f2?

Je ne sais pas ce que c'est ... mais il peut être converti mécaniquement de haut en bas, donc c'est tout à fait le cas lorsque vous en avez besoin.

Veuillez commenter si c'est différent ou quelque chose comme ça.

Postscript Est-ce que ça va?

Article de référence: [Python] Recursive with lambda

Avec des arguments de mots clés ...

python


f3 = ( lambda x, f =  lambda f, x : case(     x == 0   and do( 1 )
                                		or otherwise and do( x * f(f,  x - 1 ) )
                            		)
       : f( f,  x ) 
     )

Nettoyer. D'une manière ou d'une autre, le sens est facile à comprendre. J'ai beaucoup appris.

Recommended Posts

Python: j'ai pu récurer en lambda
Python: peut être répété en lambda
J'étais accro au grattage avec Selenium (+ Python) en 2020
Je veux pouvoir exécuter Python avec VS Code
J'ai essayé d'implémenter PLSA en Python
J'ai essayé d'implémenter la permutation en Python
J'ai essayé d'implémenter PLSA dans Python 2
J'ai essayé d'implémenter ADALINE en Python
Je voulais résoudre ABC159 avec Python
J'ai essayé d'implémenter PPO en Python
Ce que j'étais accro à Python autorun
Ce à quoi j'étais accro avec json.dumps dans l'encodage base64 de Python
[Couches Python / AWS Lambda] Je souhaite réutiliser uniquement le module dans AWS Lambda Layers
J'étais accro aux variables de classe et aux variables d'instance erronées en Python
J'ai pu imprimer l'imprimante thermique "PAPERANG" depuis Python (Windows10, Python3.6)
Je veux faire le test de Dunnett en Python
Je veux créer une fenêtre avec Python
J'ai écrit "Introduction à la vérification des effets" en Python
Je veux fusionner des dictionnaires imbriqués en Python
J'ai essayé d'implémenter TOPIC MODEL en Python
Le nom du fichier était mauvais en Python et j'étais accro à l'importation
J'ai essayé d'implémenter le tri sélectif en python
Je veux afficher la progression en Python!
J'ai pu me moquer d'AWS-Batch avec python, moto, donc je vais le laisser
Je veux écrire en Python! (1) Vérification du format de code
J'ai essayé de représenter graphiquement les packages installés en Python
Je souhaite intégrer une variable dans une chaîne Python
Je veux facilement implémenter le délai d'expiration en python
Je veux écrire en Python! (2) Écrivons un test
Même avec JavaScript, je veux voir Python `range ()`!
J'ai essayé d'implémenter un pseudo pachislot en Python
Je veux échantillonner au hasard un fichier avec Python
J'ai essayé d'implémenter le poker de Drakue en Python
Je veux travailler avec un robot en python.
J'ai essayé d'implémenter GA (algorithme génétique) en Python
Je veux écrire en Python! (3) Utiliser des simulacres
Je veux AWS Lambda avec Python sur Mac!
J'ai essayé de résumer comment utiliser les pandas de python
J'étais accro à essayer logging.getLogger avec Flask 1.1.x
Je veux utiliser le jeu de données R avec python
Ce à quoi j'étais accro lors de l'utilisation de Python tornado
Je veux faire quelque chose avec Python à la fin
Je veux manipuler des chaînes dans Kotlin comme Python!
[Python] Scraping dans AWS Lambda
L'amour est né en Python 2
Connectez-vous au site Web en Python
Parler avec Python [synthèse vocale]
Comment développer en Python
Je comprends Python en japonais!
Ce que j'ai appris en Python
L'amour est né en Python 3
Comment utiliser Python lambda
Publier sur Slack en Python
Je veux pouvoir analyser des données avec Python (partie 3)
J'ai essayé de créer une API list.csv avec Python à partir de swagger.yaml
J'ai pu implémenter l'authentification d'application Web avec flask-login
J'ai essayé d'implémenter un automate cellulaire unidimensionnel en Python
Comment importer la bibliothèque Python configurée dans EFS dans Lambda
Je veux pouvoir analyser des données avec Python (partie 1)