Ich weiß überPython Zuordnung zu bedingter LHS
a = val1 if condition else val2
aber ist es eine Möglichkeit, so etwas wie
a if condition else b = val
, die ein SyntaxError
wirft zu tun (was verständlich ist nehme ich an)
I würde eine Bedingung verwenden,
if condition:
a = val
else:
b = val
aber ich hasse das gleiche Stück Code (hier, die rechte Seite) in meinem Programm zweimal (in meinem echten Code, val
ist ein nicht-trivialer Ausdruck). Ich weiß, dass ich einfach eine Dummy-Variable machen kann, um das Stück zu halten, aber das scheint un-idiomatisch zu sein.
Es fiel mir auch ein Tupel zu tun
ba = (b,a)
ba[bool(condition)] = val
b, a = ba
aber das scheint auch sehr nicht-idiomatische.
Gibt es einen anderen Weg, an den ich nicht denke?
'a, b = val, b, wenn cond els schreiben e a, val 'ist eine Zeile, wiederholt aber immer noch' val '. –
Es ist eine seltsame Anforderung. Es ist besser, die Ergebnisse nicht-trivialer Ausdrücke Variablen zuzuweisen, die entsprechend benannt sind. Z.B. topTenDebtCustomers oder was auch immer. Dann können Sie diesen Wert wie in Ihrer if/else-Anweisung "a" oder "b" zuweisen, was der richtige Weg ist. Dies ist keine "Dummy" Variable und nicht unidiomatisch, ganz im Gegenteil. Ihr Wunsch, gut benannte Variablen zu eliminieren, um eine Codezeile zu speichern, macht Sie zu einem SCHLECHTEN PROGRAMMIERER. – aaa90210
@aaa In der Situation, in der ich diese Frage gestellt habe, wurde die Bedeutung von "val" vollständig durch "condition" bestimmt. Es gibt also keine semantisch gültige Bezeichnung dafür (abgesehen von etwas wie "vielleicht_a_maybe_b"). Es ist ein totaler Eckfall, aber ich habe mich gefragt, was die Leute für richtig hielten. Natürlich ging es mir, wie so oft, ganz anders und ich musste das gar nicht machen. Es könnte theoretisch passieren. – phsyron