Opérateur ternaire en Python - Quoi ? Comment? Pourquoi?

Opérateur ternaire en Python - Quoi ? Comment? Pourquoi?

Dans le monde de la programmation, avoir la capacité de simplifier le code est précieux à la fois pour la lisibilité et l'efficacité du code. Un outil à votre disposition pour faire cela en Python est l'opérateur ternaire.

L'opérateur ternaire Python (ou expression conditionnelle) vous permet d'évaluer des déclarations selon qu'une condition donnée est vraie ou fausse, le tout dans une seule ligne de code. Il peut remplacer efficacement une instruction if-else multiligne rendant votre code plus compact.

En explorant le potentiel des opérateurs ternaires Python , vous découvrirez qu'ils peuvent être très utiles pour optimiser vos programmes. Qu'il s'agisse de simplifier la logique de prise de décision ou de rationaliser votre code, l'utilisation efficace des opérateurs ternaires Python peut rendre votre code beaucoup plus facile à lire et à comprendre.

Alors, jetons un coup d'œil sous le capot et voyons de quoi il s'agit !

Opérateur ternaire en Python - Quoi ?  Comment?  Pourquoi?

Table des matières

Qu'est-ce qu'un opérateur ternaire Python ?

Les opérateurs Python Ternary offrent un moyen concis d'évaluer une instruction selon qu'une condition est vraie ou fausse, ce qui rend votre code compact et plus facile à lire. Certaines personnes les appellent également des expressions conditionnelles ou des opérateurs conditionnels.

Syntaxe de base

L'opérateur ternaire a été introduit dans Python 2.5 et a une structure simple composée de trois opérandes :

#demonstrate python ternary operator syntax

result = value_if_true if condition else value_if_false

Cette syntaxe se compose de trois parties principales :

  1. La condition : Il s'agit d'une expression booléenne évaluée comme vraie ou fausse, une

  2. value_if_true : valeur renvoyée si l'expression booléenne est vraie.

  3. value_if_false : valeur renvoyée si l'expression booléenne est fausse.

Cas d'utilisation courants

Les opérateurs ternaires ou les expressions conditionnelles sont souvent utilisés pour simplifier de courtes instructions if-else dans votre code. Voici quelques exemples pour illustrer comment vous pouvez appliquer un opérateur ternaire Python :

Exemple 1 : attribution d'une valeur en fonction d'une condition

 age = 25
 
category = "adult" if age >= 18 else "minor"

Dans cet exemple, l'opérateur ternaire Python attribue la valeur « adulte » à la variable catégorie si l' âge est supérieur ou égal à 18 ans, et « mineur » sinon.

En supposant que nous ayons choisi d'utiliser une instruction if-else au lieu d'un opérateur ternaire Python, cela ressemblerait à ceci :

age = 25

if age > 18:
   category = "Adult"
else:
   category = "Minor"

Dans ce cas, nous pouvons voir que l'utilisation d'un opérateur ternaire rend le code beaucoup plus compact et facile à lire.

Exemple 2 : Sélection du plus petit de deux nombres

a = 10
b = 15

smallest = a if a < b else b

Ici, l'opérateur conditionnel ternaire vous aide à déterminer le plus petit de deux nombres en renvoyant la plus petite valeur entre a et b.

Exemple 3 : Affectation de la valeur minimale de deux variables :

num1 = 10
num2 = 20

min_num = num1 if num1 < num2 else num2
print(min_num)

La sortie de cet exemple sera 10, car l'opérateur ternaire évalue la condition et renvoie la plus petite valeur.

Exemple 4 : Déterminer si un nombre est pair ou impair :

num = 5

result = "Even" if num % 2 == 0 else "Odd" 
print(result)

La sortie de cet exemple sera Odd , car la condition prend la valeur False et l'opérateur ternaire renvoie le résultat approprié.

Ces exemples montrent comment un opérateur ternaire Python peut rendre votre code plus concis et plus facile à lire. En utilisant la syntaxe de base et en comprenant les cas d'utilisation courants, vous pouvez incorporer efficacement un opérateur ternaire dans votre code Python.

Dans des applications plus pratiques, vous pouvez l'utiliser en conjonction avec une boucle pour vérifier, évaluer ou effectuer des opérations sur des données.

Pour une gestion plus efficace des données, vous pouvez consulter cette vidéo sur Comment gérer les données manquantes en Python avec interpolation.

Comment utiliser l'opérateur ternaire Python

La syntaxe normale de l'opérateur ternaire if-else n'est qu'une des nombreuses façons dont nous pouvons implémenter un opérateur ternaire Python. Nous pouvons également l'implémenter en utilisant des structures de données courantes telles que des dictionnaires Python, des tuples et des listes.

Examinons certaines de ces méthodes :

Mappage de dictionnaire

Vous pouvez émuler un opérateur ternaire Python avec un mappage de dictionnaire pour stocker les résultats pour différentes conditions. Cela peut être utile lorsque vous disposez d'un ensemble fini de conditions et de résultats correspondants.

Voici un exemple utilisant le mappage de dictionnaire pour vérifier si un nombre est pair ou impair :

#Implement python ternary operator with dictionary mapping

number = 7
result = {True: "Even", False: "Odd"}

is_even = result[number % 2 == 0]

Le programme ci-dessus renverra " Odd " puisque l'expression booléenne entre parenthèses est évaluée à False.

Utilisation de tuples

Les tuples Python sont une structure de données ordonnée et immuable que vous pouvez utiliser pour implémenter des opérateurs ternaires. Fondamentalement, l'opérateur ternaire tuple a une syntaxe de :

(condition_is_false, condition_is_true)[condition]

La condition est évaluée à True ou False qui, en Python, sont égaux aux entiers 1 et o respectivement.

Ainsi, le tuple renvoie l'élément qui correspond à l'index résultant. Par exemple, si la condition est évaluée à True qui est 1 , le code renvoie condition_is true .

Sinon, il est évalué à False qui est 0, et le tuple renvoie condition_is_false . Voici un exemple ci-dessous :

#Implement ternary operator with tuples

c = False
result = ('a', 'b')[c]

Le tuple stockera la valeur ' a ' dans la variable result puisque la condition est évaluée à False. La plupart des développeurs n'aiment pas utiliser ce format pour les opérateurs ternaires car cela peut être un peu déroutant, ce qui va à l'encontre de l'objectif.

Fonctions lambda

Les fonctions Lambda sont des fonctions anonymes sur une seule ligne que vous pouvez utiliser comme alternative aux opérateurs ternaires. Ils vous permettent d'effectuer des calculs simples et de renvoyer un résultat basé sur une condition donnée.

Voici un exemple d'utilisation d'une fonction lambda pour trouver le maximum de deux nombres :

#implement python ternary operator with lambda functions

a, b = 10, 20
max_value = (lambda: a, lambda: b)[a < b]()

La fonction lambda renvoie a si la condition prend la valeur True . Sinon, il renvoie b .

Qu'est-ce qu'un opérateur ternaire imbriqué ?

Un opérateur ternaire imbriqué est une expression conditionnelle avec deux ou plusieurs expressions booléennes. Vous pouvez créer cela en enchaînant deux ou plusieurs conditions booléennes pour vérifier plusieurs conditions.

Nous pouvons utiliser ces types d'opérateurs ternaires pour modéliser les instructions « elif » et les blocs if-else imbriqués.

Regardons un exemple d' opérateur ternaire Python imbriqué.

age = 21

#Normal elif statement
if age< 21:
   print('Child')
elif age< 25:
   print ('young adult')
else:
   print('Adult')

#elif statement as a ternary operator
print('Child') if age < 18 else print('Young adult') if age <21 else print ('Old Person')

#Output: 'Young Adult'

Vous pouvez ajouter des crochets à l'opérateur ternaire Python si vous souhaitez imiter une instruction if-else imbriquée. Cependant, ce n'est pas une bonne pratique car l'opérateur ternaire peut devenir très long et illisible.

Dans de tels cas, il vaut mieux utiliser un bloc if-else standard dans votre code.

Quels sont les avantages de l'opérateur ternaire Python ?

L'utilisation de l'opérateur ternaire Python dans votre code présente de nombreux avantages. Certains de ces avantages incluent :

Lisibilité et brièveté du code

L'utilisation de l'opérateur ternaire Python peut rendre votre code plus concis, vous permettant d'écrire des expressions conditionnelles sur une seule ligne.

Ceci est particulièrement utile lorsqu'il s'agit de conditions simples et directes. Votre code peut être plus lisible et plus facile à comprendre, car il réduit le besoin de plusieurs lignes d'instructions if-else.

Considérations relatives aux performances

Bien que l'opérateur ternaire puisse conduire à un code plus compact, son impact sur les performances est généralement minime. L'interpréteur de Python est conçu pour optimiser l'exécution du code, ce qui signifie que l'opérateur ternaire et les instructions if-else ont généralement des caractéristiques de performances similaires.

Lorsque vous écrivez du code Python , privilégiez la lisibilité et la maintenabilité aux performances, sauf si vous travaillez avec des applications critiques en termes de performances.

Rappelez-vous que des situations différentes appellent des approches différentes. Parfois, l'utilisation de l'opérateur ternaire est bénéfique, tandis que dans d'autres cas, s'en tenir aux instructions traditionnelles if-else peut être plus appropriée.

Inconvénients de l'opérateur ternaire Python

Les opérateurs ternaires sont parfaits pour simplifier votre code et le rendre compact. Cependant, leur utilisation peut présenter certains inconvénients.

Voici quelques-uns de ces inconvénients :

Les opérateurs ternaires imbriqués peuvent devenir complexes

Dans certains cas, l'opérateur ternaire peut rendre le code moins lisible, en particulier lors de l'utilisation de conditions complexes ou imbriquées. Dans ces situations, l'incorporation d'instructions if-else conventionnelles peut être plus appropriée pour maintenir la clarté du code.

Cela est particulièrement vrai lorsque vous essayez de remplacer une instruction if-else imbriquée par un opérateur ternaire. Il en résulte rarement un code propre.

Chaque opérande est une expression

Tous les opérandes ou valeurs de retour dans un opérateur ternaire Python sont des expressions, pas des instructions. Essayer d'utiliser une instruction d'affectation dans la syntaxe de l'opérateur ternaire entraînera une erreur de syntaxe.

Vous pouvez consulter un exemple de cela dans le code ci-dessous.

'Adult' if True else x = 44

Comme vous pouvez le voir ci-dessous, cela entraîne une erreur de syntaxe. Dans de tels cas, vous devez utiliser un bloc if-else au lieu d'un opérateur conditionnel.

Opérateur ternaire en Python - Quoi ?  Comment?  Pourquoi?

Meilleures pratiques et conseils

Lorsque vous utilisez l'opérateur ternaire en Python, il existe quelques bonnes pratiques et astuces pour vous aider à écrire un code propre, efficace et lisible.

Tout d'abord, assurez-vous que votre expression conditionnelle est courte et concise. Des conditions longues et complexes peuvent rendre difficile la compréhension de la logique derrière l'opérateur ternaire.

Si vous vous trouvez face à une condition complexe, il peut être préférable d'utiliser une instruction if-else régulière à la place.

#demonstrate nested ternary operator
# Good example 
result = "positive" if number >= 0 else "negative" 


# Bad example 
result = (a + b if (x > 10 and y > 20) else c + d) if (z > 30 and p > 40) else ...

Deuxièmement, évitez d'imbriquer plusieurs opérateurs ternaires, ce qui peut conduire à un code confus et illisible. Comme pour les conditions complexes, envisagez d'utiliser une instruction if-else pour plus de lisibilité.

# Good example 

x = A if condition1 else B if condition2 else C 

# Bad example 
x = A if condition1 else (B if condition2 else (C if condition3 else ...)) 

Enfin, soyez conscient des cas d'utilisation appropriés pour l'opérateur ternaire. Il convient particulièrement aux affectations simples sur une seule ligne où la condition et le résultat sont faciles à comprendre.

Si votre code implique une logique plus complexe, des boucles ou plusieurs affectations, il est préférable de s'en tenir aux instructions if-else traditionnelles.

FAQ sur les opérateurs ternaires Python

Voici quelques questions que les nouveaux programmeurs nous posent généralement sur les opérateurs ternaires :

Comment utilisez-vous l'opérateur ternaire dans une instruction de retour en Python ?

Vous pouvez utiliser un opérateur ternaire Python dans l'instruction de retour d'une fonction. Tout ce que vous avez à faire est de l'ajouter à l'instruction de retour.

Voici un exemple:

#program to check cheese age

def is_legal(age):
  return 'legal' if age > 18 else 'Not legal'

Un opérateur ternaire est-il plus rapide qu'une instruction if-else en Python ?

Non, les deux ont des caractéristiques de performance similaires. Un opérateur ternaire et une instruction if-else ont tous deux une complexité temporelle O(1).


Quest-ce que le self en Python ? Exemples concrets

Quest-ce que le self en Python ? Exemples concrets

Qu'est-ce que le self en Python ? Exemples concrets

Comment enregistrer et charger un fichier RDS dans R

Comment enregistrer et charger un fichier RDS dans R

Vous apprendrez à enregistrer et à charger des objets à partir d'un fichier .rds dans R. Ce blog expliquera également comment importer des objets de R vers LuckyTemplates.

First N Business Days Revisited - Une solution de langage de codage DAX

First N Business Days Revisited - Une solution de langage de codage DAX

Dans ce didacticiel sur le langage de codage DAX, découvrez comment utiliser la fonction GENERATE et comment modifier dynamiquement le titre d'une mesure.

Présentez des informations à laide de la technique des visuels dynamiques multi-threads dans LuckyTemplates

Présentez des informations à laide de la technique des visuels dynamiques multi-threads dans LuckyTemplates

Ce didacticiel explique comment utiliser la technique Multi Threaded Dynamic Visuals pour créer des informations à partir de visualisations de données dynamiques dans vos rapports.

Introduction au filtrage du contexte dans LuckyTemplates

Introduction au filtrage du contexte dans LuckyTemplates

Dans cet article, je vais parcourir le contexte du filtre. Le contexte de filtrage est l'un des principaux sujets que tout utilisateur de LuckyTemplates doit d'abord connaître.

Meilleurs conseils pour utiliser les applications dans le service en ligne LuckyTemplates

Meilleurs conseils pour utiliser les applications dans le service en ligne LuckyTemplates

Je souhaite montrer comment le service en ligne LuckyTemplates Apps peut aider à gérer différents rapports et informations générés à partir de diverses sources.

Analyser les changements de marge bénéficiaire au fil du temps - Analytics avec LuckyTemplates et DAX

Analyser les changements de marge bénéficiaire au fil du temps - Analytics avec LuckyTemplates et DAX

Découvrez comment calculer les modifications de votre marge bénéficiaire à l'aide de techniques telles que la création de branches de mesure et la combinaison de formules DAX dans LuckyTemplates.

Idées de matérialisation pour les caches de données dans DAX Studio

Idées de matérialisation pour les caches de données dans DAX Studio

Ce didacticiel abordera les idées de matérialisation des caches de données et comment elles affectent les performances des DAX dans la fourniture de résultats.

Rapports dentreprise à laide de LuckyTemplates

Rapports dentreprise à laide de LuckyTemplates

Si vous utilisez encore Excel jusqu'à présent, c'est le meilleur moment pour commencer à utiliser LuckyTemplates pour vos besoins en matière de rapports commerciaux.

Quest-ce que la passerelle LuckyTemplates ? Tout ce que tu as besoin de savoir

Quest-ce que la passerelle LuckyTemplates ? Tout ce que tu as besoin de savoir

Qu'est-ce que la passerelle LuckyTemplates ? Tout ce que tu as besoin de savoir