413 votes

Si d’autre dans une compréhension de liste

J’ai une liste `` :

Pour les nombres supérieurs à 45 inclusivement, je voudrais ajouter 1 ; et pour les nombres inférieurs à il, 5.

J'ai essayé

Mais il me donne une erreur de syntaxe. Comment puis-je obtenir un comme ça dans une compréhension de liste ?

470voto

user225312 Points 22699
<pre><code></code><p>-Quelque chose si x, autre-quelque chose d’autre.</p></pre>

235voto

arboc7 Points 1816

La raison pour laquelle vous obtenez cette erreur a à voir avec la façon dont la compréhension de liste est effectuée.

Gardez à l'esprit les points suivants:

[ expression for item in list if conditional ]

Est équivalent à:

for item in list:
    if conditional:
        expression

Où l' expression est dans un format légèrement différent (pensez à la commutation du sujet et du verbe de l'ordre dans une phrase).

Par conséquent, votre code [x+1 for x in l if x >= 45] cette:

for x in l:
    if x >= 45:
        x+1

Toutefois, ce code [x+1 if x >= 45 else x+5 for x in l] est-ce (après réarrangement de l' expression):

for x in l:
    if x>=45: x+1
    else: x+5

217voto

Dan D. Points 17448
<pre><code></code><p>et pour une récompense, voici le commentaire que j’ai écrit pour la première fois que j’ai fait cette erreur en souvenir :</p><pre><code></code></pre></pre>

107voto

AndiDog Points 28417

Vous devez placer l’expression au début de la compréhension de liste, un si exposé à la fin filtre les éléments !

18voto

Stefan Gruenwald Points 494

Vous pouvez également placer l’expression conditionnelle entre crochets à l’intérieur de la compréhension de liste :

[true, false] [condition] est la syntaxe

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X