[PYTHON] Je veux lier une variable locale avec lambda

Pas ce à quoi je m'attendais ...

>>> funcs = []
>>> for fruit in [ 'apple', 'orange', 'banana' ]:
...     funcs.append(lambda: 'I like ' + fruit)
... 
>>> for f in funcs:
...     print f()
... 
I like banana
I like banana
I like banana

Le lambda de Python résout le nom de la variable au moment de l'appel, donc il devient "fruit" (= 'banana') au moment de l'exécution.

Solution

Remplacez lambda: 'j'aime' + fruit 'par lambda fruit = fruit:' j'aime '+ fruit' '.

Je pense qu'il est standard de résoudre fonctionnellement avec des fonctions d'ordre supérieur, mais si c'est ↑, il est bon d'utiliser une seule ligne. (^ ◇ ^)

>>> funcs = []
>>> for fruit in [ 'apple', 'orange', 'banana' ]:
...     funcs.append(lambda fruit=fruit: 'I like ' + fruit)
... 
>>> for f in funcs:
...     print f()
... 
I like apple
I like orange
I like banana

Recommended Posts

Je veux lier une variable locale avec lambda
Je veux écrire dans un fichier avec Python
Je souhaite intégrer une variable dans une chaîne Python
Je veux faire la transition avec un bouton sur le ballon
Je veux escalader une montagne avec l'apprentissage par renforcement
Je veux travailler avec un robot en python.
Je veux diviser une chaîne de caractères avec hiragana
Je veux AWS Lambda avec Python sur Mac!
Je souhaite créer manuellement une légende avec matplotlib
Je veux faire fonctionner un ordinateur quantique avec Python
Je veux faire ○○ avec les Pandas
Je veux déboguer avec Python
Je veux créer un éditeur de blog avec l'administrateur de django
Je veux démarrer un environnement Jupyter avec une seule commande
Je veux faire une macro de clic avec pyautogui (désir)
Je souhaite utiliser un environnement virtuel avec jupyter notebook!
Je veux installer le package de requirements.txt avec poésie
[Visualisation] Je veux dessiner un beau graphique avec Plotly
Je souhaite utiliser un caractère générique que je souhaite décortiquer avec Python remove
Je veux imprimer dans la notation d'inclusion
Je souhaite rechercher le texte intégral avec elasticsearch + python
Je veux analyser les journaux avec Python
Je veux jouer avec aws avec python
[Introduction] Je veux créer un robot Mastodon avec Python! 【Débutants】
J'ai essayé de créer un LINE BOT "Sakurai-san" avec API Gateway + Lambda
Je veux faire de matplotlib un thème sombre
Je souhaite créer facilement un modèle de bruit
Je veux utiliser MATLAB feval avec python
Je veux INSÉRER un DataFrame dans MSSQL
Je veux moquer datetime.datetime.now () même avec pytest!
Je souhaite afficher plusieurs images avec matplotlib.
Je veux frapper 100 sciences des données avec Colaboratory
Je veux être OREMO avec setParam!
Je souhaite utiliser le répertoire temporaire avec Python2
Je ne veux pas utiliser -inf avec np.log
#Unresolved Je veux compiler gobject-introspection avec Python3
Je souhaite créer un type d'implémentation pouvant être branché
Je souhaite utiliser ip vrf avec SONiC
Je veux résoudre APG4b avec Python (chapitre 2)
Je veux recommencer avec Migrate de Django
Je veux trouver facilement une délicieuse boutique
Je souhaite télécharger une application Django sur heroku
Je souhaite afficher uniquement différentes lignes du fichier texte avec diff
Je veux écrire un élément dans un fichier avec numpy et le vérifier.
Lorsque je me suis connecté à un serveur Jupyter distant avec VScode, il était distant mais local.
Je veux convertir une image en WebP avec sucette
Je veux facilement implémenter le délai d'expiration en python
Je veux répéter plusieurs fois un générateur Python
Je veux que DQN Puniki frappe un home run
Je souhaite détecter une connexion non autorisée à Facebook avec Jubatus (1)
100 coups sur le traitement d'image !! (021-030) Je veux faire une pause ...
Je veux donner un group_id à une trame de données pandas
Je veux générer rapidement UUID (memo memo) ~ Edition Python ~
Je veux gérer l'optimisation avec python et cplex
Je veux écrire en Python! (2) Écrivons un test
Je veux trouver un package populaire sur PyPi
Je veux échantillonner au hasard un fichier avec Python
Je veux hériter de l'arrière avec la classe de données python