Problème : Comment effectuer des assignations conditionnelles if d’une ligne en Python?

Exemple : Disons que vous commencez avec le code suivant.

x = 2boo = True

Vous voulez définir la valeur de x à 42 si boo est True, et ne rien faire sinon.

Plongeons les différentes façons d’accomplir ceci en Python. Nous commençons par un aperçu :

Exercice : Exécutez le code. Toutes les sorties sont-elles les mêmes ?

Puis, vous allez plonger dans chacune de ces méthodes et booster votre super pouvoir de one-liner !

Table des matières

Méthode 1 : Opérateur ternaire

L’opérateur ternaire le plus basique x if c else y renvoie l’expression x si l’expression booléenne c s’évalue à True. Sinon, si l’expression c s’évalue à False, l’opérateur ternaire renvoie l’expression alternative y.

<OnTrue> if <Condition> else <OnFalse>
Opérande Description
<OnTrue> Expression de retour de l’opérateur au cas où la condition s’évalue à True
<Condition> La condition qui détermine s’il faut retourner la branche <Sur Vrai> ou la branche <Sur Faux>.
<SurFaux> L’expression de retour de l’opérateur au cas où la condition évalue False
Opérandes de l’opérateur ternaire

Reprenons notre problème d’exemple ! Vous voulez définir la valeur de x à 42 si boo est True, et ne rien faire sinon. Voici comment le faire en une seule ligne :

x = 42 if boo else x

Bien que l’utilisation de l’opérateur ternaire fonctionne, vous vous demandez peut-être s’il est possible d’éviter la partie ...else x pour la clarté du code ? Dans la méthode suivante, vous apprendrez comment !

Si vous devez améliorer votre compréhension de l’opérateur ternaire, regardez la vidéo suivante :

Vous pouvez également lire l’article associé :

  • Python Ternaire à une ligne

Méthode 2 : instruction If à une ligne

Comme dans la méthode précédente, vous voulez définir la valeur de x à 42 si boo est True, et ne rien faire sinon. Mais vous ne voulez pas avoir une branche else redondante. Comment faire cela en Python ?

La solution pour sauter la partie else de l’opérateur ternaire est étonnamment simple – utilisez une instruction if standard sans branche else et écrivez-la dans une seule ligne de code :

if boo: x = 42

Pour en savoir plus sur ce que vous pouvez emballer dans une seule ligne, regardez ma vidéo tutoriel « If-Then-Else in One Line Python » :

Méthode 3 : hack de la syntaxe du tuple ternaire

Syntaxe du tuple ternaire en Python

Une forme raccourcie de l’opérateur ternaire est la syntaxe du tuple suivante .

Syntaxe : Vous pouvez utiliser la syntaxe de tuple (x, y) constituée d’un tuple (x, y) et d’une condition c enfermée dans un crochet. Voici une façon plus intuitive de représenter cette syntaxe de tuple.

(<OnFalse>, <OnTrue>)
Opérande Description
<OnTrue> Expression de retour de l’opérateur au cas où la condition s’évalue à True
<Condition> La condition qui détermine s’il faut retourner la branche <Sur Vrai> ou la branche <Sur Faux>.
<OnFalse> L’expression de retour de l’opérateur au cas où la condition évalue à False
Syntaxe du tuples de l’opérateur ternaire

En fait, l’ordre des opérandes <OnFalse> et <OnTrue> est juste inversé par rapport à l’opérateur ternaire de base. Premièrement, vous avez la branche qui est retournée si la condition ne tient PAS. Deuxièmement, vous avez la branche qui est retournée si la condition tient.

x = (x, 42)

Chez moi ! La condition boo tient, donc la valeur de retour passée dans la variable x est la branche <OnTrue> 42.

Ne vous inquiétez pas si cela vous embrouille – vous n’êtes pas seul. Vous pouvez clarifier la syntaxe du tuple une fois pour toutes en étudiant mon article de blog détaillé.

Article connexe : Python Ternary – Tuple Syntax Hack

Livre Python One-Liners

Les programmeurs Python amélioreront leurs compétences en informatique avec ces one-liners utiles.

Python One-Liners

Python One-Liners vous apprendra à lire et à écrire des « one-liners » : des déclarations concises de fonctionnalités utiles emballées dans une seule ligne de code. Vous apprendrez à décortiquer 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 les trucs et astuces, les expressions régulières, l’apprentissage automatique, les sujets fondamentaux de la science des données et les algorithmes utiles. Les explications détaillées des expressions régulières introduisent les concepts informatiques clés et stimulent vos compétences de codage et d’analyse. Vous découvrirez les fonctionnalités avancées de Python, telles que la compréhension des listes, le découpage en tranches, les fonctions lambda, les expressions régulières, les fonctions map et reduce, et les affectations en tranches. Vous apprendrez également à :

– Exploiter les structures de données pour résoudre des problèmes du monde réel, comme l’utilisation de l’indexation booléenne pour trouver les villes dont la pollution est supérieure à la moyenne
– Utiliser les bases de NumPy telles que le tableau, la forme, l’axe, le type, la diffusion, l’indexation avancée, le tranchage, le tri, la recherche, l’agrégation et les statistiques
– Calculer les statistiques de base des tableaux de données multidimensionnelles et les algorithmes K-Means pour l’apprentissage non supervisé
– Créer des expressions régulières plus avancées en utilisant le regroupement et les groupes nommés, les lookaheads négatifs, les caractères échappés, les espaces, les jeux de caractères (et les jeux de caractères négatifs), et les opérateurs gourmands/non gourmands
– Comprendre un large éventail de sujets informatiques, y compris les anagrammes, les palindromes, les supersets, les permutations, factorielles, les nombres premiers, les nombres de Fibonacci, l’obscurcissement, la recherche et le tri algorithmique

À la fin du livre, vous saurez comment écrire Python dans sa forme la plus raffinée, et créer des pièces concises et magnifiques de « l’art Python » en une seule ligne.

Gagnez vos One-Liners Python maintenant !

Alors qu’il travaillait comme chercheur dans les systèmes distribués, le Dr Christian Mayer a découvert son amour pour l’enseignement de l’informatique aux étudiants.

Pour aider les étudiants à atteindre des niveaux supérieurs de réussite en Python, il a fondé le site Web d’éducation à la programmation Finxter.com. Il est l’auteur du populaire livre de programmation Python One-Liners (NoStarch 2020), coauteur de la série de livres autoédités Coffee Break Python, passionné d’informatique, pigiste et propriétaire de l’un des 10 plus grands blogs Python au monde.

Ses passions sont l’écriture, la lecture et le codage. Mais sa plus grande passion est de servir les aspirants codeurs à travers Finxter et de les aider à booster leurs compétences. Vous pouvez rejoindre son académie gratuite par courriel ici.

.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée.