Il s'agit plutôt de la syntaxe de compréhension des listes en python. J'ai une compréhension de liste qui produit une liste de nombres impairs dans un intervalle donné :
[x for x in range(1, 10) if x % 2]
Cela fait un filtre - j'ai une liste de sources, où j'enlève les numéros pairs ( if x % 2
). J'aimerais utiliser quelque chose comme if-then-else ici. Le code suivant échoue :
>>> [x for x in range(1, 10) if x % 2 else x * 100]
File "<stdin>", line 1
[x for x in range(1, 10) if x % 2 else x * 100]
^
SyntaxError: invalid syntax
Il existe une expression python comme if-else :
1 if 0 is 0 else 3
Comment l'utiliser à l'intérieur d'une liste de compréhension ?
1 votes
Pour ce que ça vaut, vous avez une "compréhension de liste", pas un générateur. La syntaxe ultime est la même, sauf que les générateurs utilisent la fonction
()
au lieu de[]
.0 votes
Duplicata possible de Est-il possible d'utiliser 'else' dans une compréhension de liste en Python ?
2 votes
Il m'a fallu un moment pour comprendre pourquoi
if x % 2
élimine les nombres pairs (au lieu de les conserver) - c'est parce que lorsque lesx
est même lex % 2
entraîne0
qui, à son tour, est évalué àFalse
alors que toutint
sauf0
évalue àTrue
.