Python >> Tutoriel Python >  >> Python

Python une ligne et/ou

Comment le booléen and et or opérateurs fonctionnent dans le contexte des one-liners Python ?

Vous connaissez peut-être l'utilisation standard des opérateurs logiques appliqués aux valeurs booléennes :

>>> True and False
False
>>> False or True
True

Mais il y a plus dans ces opérateurs que seuls les experts dans l'art d'écrire des one-liners Python concis connaissent.

Par exemple, l'utilisation suivante du or l'opérateur appliqué aux valeurs non booléennes est peu connu :

>>> 'hello' or 42
'hello'
>>> [] or 42
42

De même, l'utilisation suivante de l'opérateur and est souvent source de confusion chez les lecteurs de one-liners Python avancés :

>>> 'hello' and 42
42
>>> [] and 42
[]

Comment le and et or l'opérateur fonctionne-t-il lorsqu'il est appliqué à des opérandes non booléens ?

Pour comprendre ce qui se passe, il faut regarder les définitions des opérateurs booléens :

Opérateur Description
a or b Renvoie b si l'expression a évalue à False en utilisant la conversion booléenne implicite. Si l'expression a évalue à True , l'expression a est renvoyé.
a and b Renvoie b si l'expression a évalue à True en utilisant la conversion booléenne implicite. Si l'expression a évalue à False , l'expression a est renvoyé.

Étudiez attentivement ces explications ! La valeur de retour est du même type de données que les opérandes :ils ne renvoient une valeur booléenne que si les opérandes sont déjà booléens !

Cette optimisation est appelée court-circuit et c'est une pratique courante dans de nombreux langages de programmation. Par exemple, il n'est pas nécessaire d'évaluer le résultat du deuxième opérande d'une opération and si le premier opérande est évalué à False . L'ensemble de l'opération doit être évalué à False dans ce cas car le et logique ne renvoie que True si les deux opérandes sont True .

Python va encore plus loin en utilisant la propriété de conversion booléenne implicite. Chaque objet peut être implicitement converti en une valeur booléenne. C'est pourquoi vous voyez un code comme celui-ci :

l = []
if l:
    print('hi')
else:
    print('bye')
# bye

Vous passez une liste dans la condition if. Python convertit ensuite la liste en une valeur booléenne pour déterminer la branche à visiter ensuite. La liste vide est évaluée à False . Toutes les autres listes évaluent à True , donc le résultat est bye .

Ensemble, le court-circuit et la conversion booléenne implicite permettent aux opérateurs logiques et et ou d'être appliqués à deux objets Python quelconques en tant qu'opérandes. La valeur de retour est toujours l'un des deux opérandes utilisant les règles de court-circuit décrites dans le tableau.

Exercice :Devinez la sortie ! Vérifiez ensuite si vous aviez raison ! Créez vos propres opérandes fous et évaluez-les en exécutant le code dans votre navigateur.

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