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!