#python
Вопрос:
x =5 if x 5lt;10 else 0
В приведенном выше примере я должен добавить 5 к x, если x 5 меньше 10.
но, как вы можете видеть, я вычисляю x 5 два раза, как я могу обойтись без повторения этого.
Нравится "add x to 5 if it doesnt become greater than 10 after adding"
возможно ли это на python? если да, то как вы это делаете?
Комментарии:
1. «но, как вы можете видеть, я вычисляю x 5 два раза, как я могу обойтись без повторения этого». Почему повторение вычисления является проблемой ? Вам просто нужен какой-то «более элегантный» способ получить правильное новое значение для
x
? Обязательно ли использовать условное выражение? В чем, собственно, здесь вопрос ?
Ответ №1:
Ну, вы могли бы преобразовать это выражение:
x 5 lt; 10
в это:
x lt; 5
Затем перефразируйте свой если еще один лайнер следующим образом:
x = 5 if x lt; 5 else 0
Ответ №2:
В Python 3.8 появился новый оператор «морж». :=
, что позволяет присваивать значения в виде выражений, точно так же, как =
оператор ведет себя в языках, подобных C.
Вы можете переписать свое выражение следующим образом:
x = y if (y:= x 5) lt; 10 else x