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