Est-il possible de faire cela sur une seule ligne en Python ?
if <condition>:
myList.append('myString')
J'ai essayé l'opérateur ternaire :
myList.append('myString' if <condition>)
mais mon IDE ( MyEclipse ) n'a pas aimé, sans un else
.
Est-il possible de faire cela sur une seule ligne en Python ?
if <condition>:
myList.append('myString')
J'ai essayé l'opérateur ternaire :
myList.append('myString' if <condition>)
mais mon IDE ( MyEclipse ) n'a pas aimé, sans un else
.
Oui, vous pouvez le faire :
<condition> and myList.append('myString')
Si <condition>
est faux, alors le court-circuitage interviendra et le côté droit ne sera pas évalué. Si <condition>
est vrai, alors le côté droit sera évalué et l'élément sera ajouté.
Je tiens à préciser que ce qui précède est tout à fait non pythique, et qu'il serait probablement préférable d'écrire ceci, malgré tout :
if <condition>: myList.append('myString')
Démonstration :
>>> myList = []
>>> False and myList.append('myString')
False
>>> myList
[]
>>> True and myList.append('myString')
>>> myList
['myString']
La raison pour laquelle le langage ne vous permet pas d'utiliser la syntaxe
variable = "something" if a_condition
sans else
est que, dans le cas où a_condition == False
, variable
est soudainement inconnu. Il pourrait peut-être s'agir par défaut de None
mais Python exige que toutes les affectations de variables donnent lieu à des affectations explicites. Cela s'applique également à des cas tels que votre appel de fonction, car la valeur passée à la fonction est évaluée tout comme la variable RHS d'une déclaration d'affectation serait.
De même, tous les return
doivent effectivement revenir, même si elles sont conditionnelles. return
s. Par exemple :
return variable if a_condition
n'est pas autorisé, mais
return variable if a_condition else None
est autorisé, puisque le deuxième exemple est garanti pour retourner explicitement quelque chose.
if <condition>: myList.append('myString')
Sinon, non. Pourquoi avoir besoin de le mettre sur une seule ligne ?
Notez que l'"opérateur ternaire" est un opérateur . Comme tout opérateur, il doit retourner quelque chose alors comment peut-on avoir un opérateur ternaire sans l'élément else
clause ? Que doit-elle retourner si la condition n'est pas vraie ?
Vous demandez essentiellement do_thing() if <condition> else pass
(qui lancera SyntaxError
si elle a été exécutée). Comme je l'ai découvert lors de mes recherches pour (un peu) question similaire do_thing() if condition else None
est aussi proche que vous pouvez l'être (ce qui est juste une autre manière de faire <condition> and do_thing()
). Donc, pour résumer cette idée et les autres réponses, voici vos options :
if <condition>: myList.append('myString')
- semble être le moyen le moins "bricolé" (et donc préféré).<condition> and myList.append('myString')
myList.append('myString') if <condition> else None
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.