@Jon Clements ви даде отличен отговор: как да решите проблема с помощта на идиома на Python. Ако други програмисти на Python погледнат неговия код, те ще го разберат веднага. Това е просто правилният начин да го направите с помощта на Python.
За да отговоря на действителния ви въпрос: не, това не работи. Троичният оператор има следната форма:
expr1 if condition else expr2
condition
трябва да е нещо, което се оценява на bool
. Троичният израз избира едно от expr1
и expr2
и това е всичко.
Когато опитах израз като c += 1 if condition else 0
бях изненадан, че работи, и отбелязах, че в първата версия на този отговор. @TokenMacGuy посочи, че това, което наистина се случва е:
c += (1 if condition else 0)
Така че никога не можете да направите това, което се опитвате да направите, дори ако поставите в правилно състояние вместо някакъв вид цикъл. Горният случай би работил, но нещо като това би се провалило:
c += 1 if condition else x += 2 # syntax error on x += 2
Това е така, защото Python не счита оператора за присвояване за израз.
Не можете да правите тази често срещана грешка:
if x = 3: # syntax error! Cannot put assignment statement here
print("x: {}".format(x))
Тук програмистът вероятно е искал x == 3
да тества стойността, но е написал x = 3
. Python предпазва от тази грешка, като не счита присвояването за израз.
Не можете да го направите по погрешка и не можете да го направите нарочно.
person
steveha
schedule
01.02.2013