Что такое эквивалент Python для x = (10 - PullRequest
4 голосов
/ 30 января 2011

Мне было интересно, каким будет эквивалент в Python этому:

n = 100
x = (10 < n) ? 10 : n;
print x;

По какой-то причине это не работает в Python. Я знаю, что могу использовать оператор if, но мне было просто любопытно, есть ли более короткий синтаксис.

Спасибо.

Ответы [ 6 ]

17 голосов
/ 30 января 2011
x = min(n, 10)

Или, в более общем смысле:

x = 10 if 10<n else n
7 голосов
/ 30 января 2011

Вот троичный оператор в Python (также известный как условные выражения в документации).

x if cond else y
4 голосов
/ 30 января 2011

Существуют различные способы сделать троичную операцию, первым является выражение, добавленное с 2.5:

n = foo if condition else bar

Если вы хотите быть совместимым с версиями ниже 2.5, вы можете использовать тот факт, что логические значения являются подклассами int и что True ведет себя как 1, тогда как False ведет себя как 0:

n = [bar, foo][condition]

Другая возможность состоит в том, чтобы использовать поведение операторов в Python или, точнее, поведение and и or:

n = condition and foo or bar
1 голос
/ 30 января 2011
x = 10 if (10 < n) else n

(требуется Python 2.5)

1 голос
/ 30 января 2011
1 голос
/ 30 января 2011
>>> n = 100
>>> x = 10 if n > 10 else n
>>> x
10
...