Я хотел бы знать, возможно ли использовать списочное понимание с if
/ else
, которое не должно приводить к списку такой же длины, как длина обрабатываемого списка?(т.е. без финала else
)
>>> L = [0, 1, 2, 3, 4, 5, 6]
>>> [v * 10 if v < 3 else v * 2 if v > 3 else v for v in L] #if/else/if/else
[0, 10, 20, 3, 8, 10, 12]
работает нормально.Но предположим, что я хочу опустить 3, чтобы получить:
[0, 10, 20, 8, 10, 12] # No number 3
Я бы подумал, что это будет работать:
>>> [v * 10 if v < 3 else v * 2 if v > 3 for v in L] #if/else/if
Но это синтаксическая ошибка ..
Так что я подумал «может быть», это сработает:
>>> [v * 10 if v < 3 else v * 2 if v > 3 else pass for v in L] #if/else/if/else pass
Но это не так.
Это вопрос из любопытства, я понимаю, что это не обязательно самый читаемый /соответствующий подход к вышеуказанной обработке.
Я что-то упустил?Это можно сделать?(Я на питоне 2.6.5)