Python >> Tutoriel Python >  >> Python

Elif ternaire Python

Résumé :Pour utiliser une branche elif dans l'opérateur ternaire, utilisez un autre opérateur ternaire comme résultat de la branche else (opérateur ternaire imbriqué). L'opérateur ternaire imbriqué x if c0 else y if c1 else z renvoie x si état c0 est remplie, sinon si (elif) condition c1 est remplie, elle renvoie y , sinon il renvoie z .

Problème :Vous avez peut-être vu l'opérateur ternaire x if c else y . Existe-t-il un opérateur ternaire similaire avec une instruction elif supplémentaire ? En pseudocode, vous voulez quelque chose comme :

# Pseudocode
x if c elif y0 else y1

En d'autres termes :Quel est le meilleur moyen d'étendre l'opérateur ternaire à ce que vous pourriez appeler un opérateur "quaternaire" ?

Contexte :L'opérateur ternaire le plus basique x if c else y se compose de trois opérandes x , c , et y . C'est une expression avec une valeur de retour. L'opérateur ternaire renvoie x si l'expression booléenne c évalue à True . Sinon, si l'expression c évalue à False , l'opérateur ternaire renvoie l'alternative y .

Apprenez-en plus sur l'opérateur ternaire dans notre article de blog détaillé !

Exemple  :Supposons que vous souhaitiez écrire la condition if-then-else suivante dans une seule ligne de code :

>>> x = 42
>>> if x > 42:
>>>     print("no")
>>> elif x == 42:
>>>     print("yes")
>>> else:
>>>     print("maybe")
yes

La branche elif gagne :vous imprimez la sortie "yes" à la coquille.

Mais comment le faire en une seule ligne de code ? Utilisez simplement l'opérateur ternaire avec une instruction elif qui ne fonctionnera pas (cela générera une erreur de syntaxe) :

Méthode :opérateur ternaire imbriqué

La réponse est simple :imbriquer deux opérateurs ternaires comme ceci :

>>> print("no") if x > 42 else print("yes") if x == 42 else print("maybe")
yes

Si la valeur x est supérieure à 42, nous imprimons "non" au shell. Sinon, nous exécutons le reste du code (qui est un opérateur ternaire en soi). Si la valeur x est égale à 42, on imprime "oui", sinon "peut-être".

Ainsi, en imbriquant plusieurs opérateurs ternaires, nous pouvons considérablement augmenter la puissance de notre Python one-liner !

Essayez vous-même :

Exercice :Quelle méthode est la plus concise ? Comptez le nombre de caractères (ou écrivez un petit script qui le fera pour vous;)) !

Python Ternaire Multiple Elif

Dans l'exemple précédent, vous avez vu comment un opérateur ternaire imbriqué ajoute sémantiquement une branche elif. En théorie, vous pouvez ajouter un nombre arbitraire de branches elif en imbriquant de plus en plus d'opérateurs ternaires :

# Method 1: If ... Elif ... Else
x = 42
if x > 42:
    y = 1
elif x == 42:
    y = 2
elif x == 12:
    y = 3
else:
    y = 4
print(y)
# 2

# Method 2: Nested Ternary Operator
y = 1 if x > 42 else 2 if x == 42 else 3 if x == 12 else 4
print(y)
# 2

Cependant, la lisibilité en souffre beaucoup et vous ne devriez rien faire de la sorte. Un simple if ... elif ... elif ... else multi-lignes l'énoncé c'est mieux !

Discussion

Cependant, même si l'opérateur ternaire imbriqué est plus concis qu'une instruction if-elif-else, il n'est pas recommandé en raison de la lisibilité de votre code. La plupart des programmeurs n'ont aucun mal à comprendre une simple instruction if-elif-else. Mais un opérateur ternaire imbriqué est un morceau de code Python de niveau avancé et, en particulier, les débutants auront du mal à le comprendre.

Donc, c'est formidable que vous ayez élargi votre superpuissance One-Liner. Mais vous devez l'utiliser à bon escient !

Vidéo associée :If-Then-Else dans une ligne de code Python

Livre Python One-Liners :maîtrisez d'abord la ligne unique !

Les programmeurs Python amélioreront leurs compétences en informatique avec ces lignes utiles.

Python One-Liners vous apprendra à lire et à écrire des « lignes simples » :des déclarations concises de fonctionnalités utiles regroupées dans une seule ligne de code. Vous apprendrez à décompresser et à comprendre systématiquement n'importe quelle ligne de code Python, et à écrire du Python éloquent et puissamment compressé comme un expert.

Les cinq chapitres du livre couvrent (1) les trucs et astuces, (2) les expressions régulières, (3) l'apprentissage automatique, (4) les principaux sujets de science des données et (5) les algorithmes utiles.

Des explications détaillées des one-liners introduisent les concepts clés de l'informatique etdéveloppez vos compétences en matière de codage et d'analyse . Vous découvrirez les fonctionnalités Python avancées telles que la compréhension de liste , tranchage , fonctions lambda , expressions régulières , carte et réduire fonctions et affectations de tranches .

Vous apprendrez également à :

  • Exploiter les structures de données pour résoudre des problèmes réels , comme utiliser l'indexation booléenne pour trouver des villes avec une pollution supérieure à la moyenne
  • Utiliser les bases de NumPy comme tableau , forme , axe , tapez , diffusion , indexation avancée , tranchage , tri , recherche , agrégation , et statistiques
  • Calculer des statistiques de base de tableaux de données multidimensionnels et les algorithmes K-Means pour l'apprentissage non supervisé
  • Créer davantage d'expressions régulières avancées en utilisant le regroupement et groupes nommés , anticipations négatives , caractères échappés , espaces blancs, jeux de caractères (et jeux de caractères négatifs ) et opérateurs gourmands/non gourmands
  • Comprendre un large éventail de sujets informatiques , y compris les anagrammes , palindromes , surensembles , permutations , factorielles , nombres premiers , Fibonacci chiffres, obscurcissement , recherche , et tri algorithmique

À la fin du livre, vous saurez comment écrire Python dans sa forme la plus raffinée , et créez de belles pièces concises d'"art Python" en une seule ligne.

Obtenez vos Python One-Liners sur Amazon !!