Почему возникает следующее поведение? Я ожидаю, что результат будет только 1.Неожиданное поведение if/else в понимании списка
In [77]: a = 1
In [78]: [a if a else s for s in [0, 1,0]]
Out[78]: [1, 1, 1]
Поскольку a
не опустошить значение в списке должно быть только a
. Здесь else
должен выполняться только в том случае, если a
является None
.
EDIT: Я хочу, чтобы вставить a
в списке, если a
не None
, иначе вставить s
в списке.
Я думаю, что вы хотели '[s для s в [0, 1, 0], если s == a]' (или просто '... if s]', так как '1' является правдой-y и '0' - false-y). Непонятно, почему вы ожидали, что код, который вы опубликовали, будет иметь другой результат. – jonrsharpe
@jonrsharpe Nope. Я хочу вставить a в список, если a не None, иначе вставьте s в список. –
Можете ли вы лучше объяснить, что хотите? – Kasramvd