Maison  >  Article  >  développement back-end  >  Quelle est la syntaxe correcte pour les instructions conditionnelles dans les compréhensions de listes en Python ?

Quelle est la syntaxe correcte pour les instructions conditionnelles dans les compréhensions de listes en Python ?

Susan Sarandon
Susan Sarandonoriginal
2024-10-22 13:14:02323parcourir

What is the Correct Syntax for Conditional Statements in List Comprehensions in Python?

Compréhensions de listes avec instructions conditionnelles

En Python, les compréhensions de listes offrent un moyen compact de générer de nouvelles listes. Cependant, lorsque vous utilisez des instructions conditionnelles dans ces compréhensions, il est crucial de respecter la syntaxe appropriée pour éviter les erreurs.

Problème : comparer des itérables

Supposons que nous ayons deux itérables, un et b, et nous souhaitons créer une nouvelle liste contenant des éléments qui apparaissent dans les deux itérables. Nous essayons le code suivant :

<code class="python">a = ('q', 'r')
b = ('q')
print([ y if y not in b for y in a])</code>

Erreur de syntaxe

Cependant, ce code produit une erreur de syntaxe non valide, indiquant un problème avec la fonction lambda utilisée dans la compréhension .

Solution : Réorganiser la compréhension

La syntaxe correcte pour utiliser une instruction conditionnelle dans une compréhension de liste est de placer l'expression if après la clause for. Dans notre cas, le code corrigé serait :

<code class="python">[y for y in a if y not in b]</code>

Cette compréhension parcourra a et ajoutera des éléments à la nouvelle liste uniquement s'ils ne sont pas présents dans b. Le résultat devrait produire ['r'], comme prévu.

Syntaxe alternative

Alternativement, nous pouvons utiliser un opérateur ternaire if-else pour gérer la logique conditionnelle dans la compréhension de la liste :

<code class="python">[y if y not in b else None for y in a]</code>

Ce code créera une nouvelle liste où les éléments non présents dans b seront ajoutés, tandis que d'autres éléments recevront des valeurs Aucun.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn