Recherche de site Web

Lambda avec if mais sans else en Python


Python est un langage flexible et puissant qui offre une multitude de fonctionnalités pour s'adapter à différents styles de programmation. La fonction lambda, un outil permettant d'écrire des fonctions brèves et anonymes dans votre code, est l'une de ces caractéristiques. Dans cet article, nous examinerons l'idée de combiner la fonction lambda avec une instruction « if » sans utiliser de clause « else ». Plusieurs exemples instructifs seront également utilisés pour approfondir votre compréhension.

Comprendre les fonctions Lambda en Python

En Python, les fonctions anonymes déclarées avec le mot-clé « lambda » sont appelées fonctions lambda. Ils peuvent être particulièrement utiles lorsque vous avez besoin d'une fonction unique et courte mais que vous ne souhaitez pas la définir de manière conventionnelle en utilisant le mot-clé 'def'. Voici un exemple simple de fonction lambda :

multiply = lambda x, y: x * y
print(multiply(5, 6))

Sortir

30

La fonction lambda lambda x, y : x * y dans cette illustration accepte deux arguments et renvoie la somme de ces deux arguments. Il est donné à la variable de multiplication, qui peut ensuite être utilisée comme une fonction régulière.

Lambda avec If, mais sans Else ?

Dans une fonction lambda, nous pouvons généralement utiliser des instructions conditionnelles if-else comme suit -

check_even = lambda x: True if x % 2 == 0 else False
print(check_even(4))

Sortir

True

Cependant, la clause « autrement » n'est pas toujours nécessaire lors de l'utilisation d'une instruction « if » à l'intérieur d'une fonction lambda. La clause « else » est requise par la syntaxe de l'instruction « if » dans une fonction lambda en Python. En utilisant certaines fonctions Python intégrées, cette nécessité peut être évitée.

Examinons quelques cas réels d'utilisation de lambda avec l'instruction « if » mais sans l'instruction « else ».

Exemple 1 : Filtrage d'une liste

numbers = [5, 12, 17, 18, 24, 32]
filtered_numbers = filter(lambda x: x % 2 == 0, numbers)
print(list(filtered_numbers))

Sortir

[12, 18, 24, 32]

La fonction filter() est utilisée dans cet exemple pour appliquer la fonction lambda à chaque élément de la liste d'entiers. L'élément apparaît dans la liste de sortie si la fonction lambda renvoie True. Gardez à l'esprit que nous avons utilisé efficacement « if » dans la fonction lambda sans nécessiter de clause « sinon ».

Exemple 2 : Transformation des éléments d'une liste

numbers = [5, 12, 17, 18, 24, 32]
transformed_numbers = map(lambda x: x**2 if x % 2 == 0, numbers)
print(list(transformed_numbers))  # Raises a SyntaxError

Sortir

File "/home/cg/root/64b40d33edea0/main.py", line 2
    transformed_numbers = map(lambda x: x**2 if x % 2 == 0, numbers)
                                        ^^^^^^^^^^^^^^^^^^
SyntaxError: expected 'else' after 'if' expression

Cet exemple montre que tenter d'utiliser « if » à l'intérieur de map() avec une fonction lambda sans « else » provoque une SyntaxError. Cependant, vous pouvez éviter cela en imitant le comportement de « if » sans « else » en renvoyant None (l'équivalent Python de « aucune valeur ») pour les composants qui ne remplissent pas la condition.

numbers = [5, 12, 17, 18, 24, 32]
transformed_numbers = map(lambda x: x**2 if x % 2 == 0 else None, numbers)
print(list(transformed_numbers))

Sortir

[None, 144, None, 324, 576, 1024]

Dans l'exemple mis à jour, Aucun est utilisé à la place de tous les nombres qui ne correspondent pas aux exigences.

Exemple 3 : Utilisation de la compréhension de liste

Une autre fonctionnalité de Python est la compréhension de liste, qui fournit une méthode plus pythonique pour implémenter « si » sans « sinon » dans une fonction lambda.

numbers = [5, 12, 17, 18, 24, 32]
squared_numbers = [x**2 for x in numbers if x % 2 == 0]
print(squared_numbers)

Sortir

[144, 324, 576, 1024]

Ici, nous obtenons essentiellement le comportement « si » sans le comportement « sinon » en mettant au carré les nombres uniquement s'ils sont pairs. Il ne nous reste que les carrés des entiers pairs après avoir ignoré tous les nombres impairs.

Tirer parti des fonctions Lambda pour plus d'efficacité

en utilisant des méthodes Python intégrées comme filter() et map() ou des structures comme la compréhension de liste, nous pouvons toujours concevoir efficacement des conditions qui fonctionnent comme « si » sans « else » malgré l'exigence syntaxique de la clause « else » lors de l'emploi d'un « si » if' dans une fonction lambda.

Votre code Python sera plus clair et plus productif grâce aux fonctions lambda, qui offrent une approche très concise et lisible pour écrire des fonctions. Lorsqu'ils sont utilisés correctement, ils peuvent grandement simplifier votre code et améliorer les performances, en particulier pour les tâches de traitement de données.

Gardez à l'esprit que la pratique est la clé pour comprendre les fonctions lambda. Lorsque cela a du sens, essayez de les inclure dans votre code Python. Bientôt, vous serez à même d'utiliser cet outil puissant pour améliorer l'efficacité et l'efficience de votre programmation Python.

Conclusion

En raison des restrictions strictes de syntaxe de Python, l'idée d'utiliser une fonction lambda avec « if » mais sans « else » peut sembler contradictoire à première vue. Mais vous pouvez accomplir ce comportement avec les fonctions ou constructions intégrées de Python si vous maîtrisez bien les fonctions lambda. Cette méthode peut fournir un code plus efficace et plus lisible et est extrêmement utile pour la programmation fonctionnelle.

Articles connexes: