Cleaning up conditionals

Steve D'Aprano steve+python at
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
    l2[v] = new_value

(2) Step Two: add a temporary variable to avoid repeating the assignment

if condition:
    temp = l1
    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

“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