Lambdas Python

Lambdas Python

Introduction

Vous avez travaillé avec les fonctions et les méthodes, mais il existe un type de fonction différent, la fonction anonyme. Les fonctions anonymes ne sont que des fonctions sans noms, et à Python, elles sont manipulées avec l'opérateur de lambda.

Les fonctions anonymes vous permettent d'utiliser le comportement d'une fonction sans avoir à créer une fonction. C'est particulièrement bon lorsque vous n'avez besoin d'utiliser une fonction qu'une ou deux fois. Cela peut sembler un événement inhabituel, mais cela se produit assez fréquemment lorsqu'une fonction ou une méthode prend une fonction en tant que paramètre.

Lambdas

L'opérateur Lambda a quelques pièces de base. Cela consiste en lambda, une liste de paramètres et une opération. L'opération est séparée des deux autres avec un côlon. Découvrez cet exemple.

foo = lambda a = 2, b = 1: a / b imprimer (foo) imprimer (foo (16, 4)) 

Si vous utilisez des lambdas à titre autonome, vous pouvez les définir égaux à une variable. Dans cette forme, ils ne sont pas aussi polyvalents, mais ils peuvent toujours jouer un rôle dans la création de fonctions à la volée.

Les lambdas trouvent vraiment leur utilisation pour être transmis à d'autres fonctions. Voyez comment cela fonctionne dans l'exemple ci-dessous.

def do_something (fonction, list_a, list_b): pour x dans list_a: pour y dans list_b: function (x, y) do_something (lambda x, y: print (x * y), [1, 3, 5], [2 , 4, 6]) 

Bien sûr, cet exemple n'est pas si pratique. Cela illustre le point, cependant. Vous pouvez créer un lambda dans un appel de fonction pour le passer comme argument à une autre fonction.

Carte

Le carte() La fonction est intéressante. Il vous permet d'itérer simultanément sur une ou plusieurs listes et de les transmettre à une fonction. Il est très facile que cette fonction soit une expression lambda.

Cet exemple peut aider à clarifier.

Imprimer (liste (carte (Lambda x, y: x * y, [1, 2, 3, 4, 5], [2, 4, 6, 8, 10])))) 

Cela ressemble à un gâchis, il est donc préférable de le décomposer. Le morceau principal commence par carte. Il faut au moins deux arguments, une fonction et une liste. Cela peut prendre plusieurs listes, cependant, et cette fois il y en a deux. Il faut également une expression de lambda qui accepte deux arguments et les multiplie ensemble.

La fonction de carte passe par ces listes. Il définit chaque élément de la première liste du premier argument de la fonction et de chaque élément de la deuxième liste de l'argument de la deuxième fonction. Il exécute la fonction à chaque fois. Le carte() La fonction renvoie un objet de carte.

Cet objet de carte doit être converti en une forme plus utilisable. Le liste() La fonction transforme l'objet en une liste régulière. Alors, imprimer() imprime cette liste.

Jetez un œil à un autre.

Imprimer (liste (carte (lambda x: x * 2, [1, 2, 3, 4, 5])))) 

L'exemple plus simple peut être plus facile à suivre.

Filtre

Le filtre() La fonction est une autre fonction similaire à carte(). Il prend une fonction et une liste comme des arguments et itéère sur la liste, exécutant les éléments via la fonction.

Au lieu d'exécuter simplement une fonction, filtre() utilise la fonction comme condition de test pour les éléments de la liste. L'objet qu'il crée contient tous les éléments où la condition a évalué «Vrai."

Imprimer (liste (filtre (lambda x: x> 5, [2, 4, 6, 8])))) 

La liste résultante ne contenait que 6 et 8 car ce sont les deux conditions où la condition donnée dans la fonction évaluée «Vrai." filtre(), Lorsqu'il est utilisé en conjonction avec une expression de lambda, est un moyen efficace de trier et de tester les listes contre une condition.

Réflexions de clôture

Les lambdas ne sont pas le sujet le plus populaire de Python. Beaucoup de développeurs ne les aiment même pas. Même le créateur de Python n'est pas un fan.

Si vous les aimez, génial. Sinon, ne t'inquiète pas. Il existe des alternatives qui seront discutées dans les guides ultérieurs.

Pour l'instant, il est juste important d'être conscient des lambdas et de la façon dont ils fonctionnent. Vous les rencontrerez de temps en temps, et ils peuvent être la solution la plus simple.

Des exercices

  1. Créer une expression de lambda qui multiplie deux nombres et le définir égal à une variable.
  2. Utilisez cette variable pour appeler le lambda et passer deux numéros.
  3. Écrivez une fonction qui prend une fonction de paramètre. Appelez cette fonction avec et passez-la une lambda.
  4. Utilisez le carte() fonction avec un lambda pour ajouter chaque élément en deux listes.
  5. Utilisez le filtre() fonction avec un lambda à tester si chaque élément d'une liste est étrange.

Tutoriels Linux connexes:

  • Choses à installer sur Ubuntu 20.04
  • Une introduction à l'automatisation Linux, des outils et des techniques
  • Choses à faire après l'installation d'Ubuntu 20.04 Focal Fossa Linux
  • Mint 20: Mieux que Ubuntu et Microsoft Windows?
  • Système linux hung? Comment s'échapper vers la ligne de commande et…
  • Ubuntu 20.04 Guide
  • Choses à installer sur Ubuntu 22.04
  • Masterring Bash Script Loops
  • Choses à faire après l'installation d'Ubuntu 22.04 Jammy Jellyfish…
  • Comment utiliser ADB Android Debug Bridge pour gérer votre Android…