Utilisation des compréhensions de liste pour les affectations conditionnelles
Dans une discussion récente, un programmeur a rencontré un défi lors de la conversion d'une boucle for avec un if/ sinon structurez-vous en une compréhension de liste concise. Le segment de code d'origine ressemblait à :
results = [] for x in xs: results.append(f(x) if x is not None else '')
L'intention était d'attribuer une chaîne vide aux éléments de la liste de résultats si les éléments correspondants dans xs étaient Aucun et d'appliquer une fonction f aux éléments non-Aucun.
La tentative initiale de création d'une compréhension de liste a échoué avec une SyntaxError :
[f(x) for x in xs if x is not None else '']
Pour utiliser avec succès les compréhensions de liste pour cette tâche, la syntaxe correcte est :
[f(x) if x is not None else '' for x in xs]
Cette modification maintient l'ordre de la vérification if/else, ce qui est essentiel pour une évaluation correcte.
Comprendre la syntaxe de compréhension de liste
En général, les compréhensions de listes avec affectations conditionnelles respectent ce qui suit syntaxe :
[f(x) if condition else g(x) for x in sequence]
où :
De plus, pour les compréhensions de listes qui impliquent uniquement filtrant les éléments en fonction d'une condition, la syntaxe est :
[f(x) for x in sequence if condition]
Expressions conditionnelles au-delà de la compréhension de liste
Il est à noter que les expressions conditionnelles comme celles utilisées dans la compréhension de liste ne sont pas exclusifs à cette construction. Ils peuvent être utilisés dans diverses situations où un choix entre deux valeurs d'expression est requis en fonction d'une condition, remplissant le même objectif que l'opérateur ternaire ? : dans d'autres langues.
Un exemple d'expression conditionnelle en dehors d'un compréhension de la liste :
value = 123 print(value, 'is', 'even' if value % 2 == 0 else 'odd')
Cette expression évalue si la valeur est divisible par 2 et imprime la chaîne correspondante.
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!