Python >> Tutoriel Python >  >> Python

Affectation conditionnelle Python sur une ligne

Problème :Comment effectuer des affectations conditionnelles sur une ligne en Python ?

Exemple :Supposons que vous commenciez avec le code suivant.

x = 2
boo = True

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

Plongeons-nous dans les différentes façons d'accomplir cela en Python. Nous commençons par un aperçu :

Exercice :Exécutez le code. Les sorties sont-elles toutes identiques ?

Ensuite, vous plongerez dans chacune de ces méthodes et augmenterez votre superpuissance en une seule ligne !

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 évalue à True . Sinon, si l'expression c évalue à False , l'opérateur ternaire renvoie l'expression alternative y .

<OnTrue> if <Condition> else <OnFalse>
Opérande Description
L'expression de retour de l'opérateur si la condition est évaluée à True
<État> La condition qui détermine s'il faut retourner la branche ou .
L'expression de retour de l'opérateur dans le cas où la condition est évaluée à False

Revenons à notre exemple de problème ! Vous souhaitez définir la valeur de x à 42 si boo est True , et ne rien faire autrement. Voici comment procéder en une seule ligne :

x = 42 if boo else x

Alors que l'utilisation de l'opérateur ternaire fonctionne, vous pouvez vous demander s'il est possible d'éviter le ...else x partie pour la clarté du code? Dans la méthode suivante, vous apprendrez comment !

Si vous avez besoin d'améliorer votre compréhension de l'opérateur ternaire, regardez la vidéo suivante :

Vous pouvez également lire l'article associé :

  • Ternaire à une ligne Python

Méthode 2 :instruction If sur une seule ligne

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

La solution pour ignorer 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 regrouper en une seule ligne, regardez mon didacticiel vidéo "If-Then-Else in One Line Python":

Méthode 3 :Hack de syntaxe de tuple ternaire

Une forme abrégée de l'opérateur ternaire est la syntaxe de tuple suivante .

Syntaxe :Vous pouvez utiliser la syntaxe de tuple (x, y)[c] composé d'un tuple (x, y) et une condition c entre crochets. Voici une manière plus intuitive de représenter cette syntaxe de tuple.

(<OnFalse>, <OnTrue>)[<Condition>]
Opérande Description
L'expression de retour de l'opérateur si la condition est évaluée à True
<État> La condition qui détermine s'il faut retourner la branche ou .
L'expression de retour de l'opérateur dans le cas où la condition est évaluée à False

En fait, l'ordre du <OnFalse> et <OnTrue> opérandes est simplement inversé par rapport à l'opérateur ternaire de base. Tout d'abord, vous avez la branche qui est renvoyée si la condition ne tient PAS. Deuxièmement, vous exécutez la branche renvoyée si la condition est vérifiée.

x = (x, 42)[boo]

Intelligent! La condition boo détient donc la valeur de retour passée dans le x la variable est le <OnTrue> succursale 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 ternaire — Tuple Syntax Hack

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 !!


Prochain article