Cleaning up conditionals

Steve D'Aprano steve+python at pearwood.info
Sun Jan 1 01:24:58 EST 2017


On Sun, 1 Jan 2017 02:58 pm, Deborah Swanson wrote:
>> It's possible to select either l1 or l2 using an expression,
>> and then subscript that with [v]. However, this does not
>> usually make for readable code, so I don't recommend it.
>>>> (l1 if whatever else l2)[v] = new_value
>>>> ChrisA
>> I'm not sure I understand what you did here, at least not well enough to
> try it.

The evolution of a Python programmer :-)
(1) Step One: the naive code.
if condition:
 l1[v] = new_value
else:
 l2[v] = new_value
(2) Step Two: add a temporary variable to avoid repeating the assignment
if condition:
 temp = l1
else:
 temp = l2
temp[v] = new_value
(3) Step Three: change the if...else statement to an expression
temp = l1 if condition else l2
temp[v] = new_value
(4) Step Four: no need for the temporary variable
(l1 if condition else l2)[v] = new_value
-- 
Steve
“Cheer up,” they said, “things could be worse.” So I cheered up, and sure
enough, things got worse.


More information about the Python-list mailing list

AltStyle によって変換されたページ (->オリジナル) /