2013-10-06 6 views
1
>>> def accept(d1, d2): 
    if somefunc(d1,d2) > 32: 
     h = 1 
    else: 
     h = 0 
    return h 

Does Python have a ternary conditional operator? не дает решения для случая, когда вы хотите вернуть значение. Предпочтительным является решение на основе лямбда.Есть ли более чистый и более короткий способ написать это условие в python?

ответ

3

Или, может быть хитрым,

return int(somefunc(d1, d2) > 32) 

Обратите внимание, что int(True) == 1 и int(False) == 0.

+0

На самом деле вы можете просто вернуть 'somefunc (d1, d2)> 32' напрямую, так как True и False уже являются' int '. – BrenBarn

+1

Но это не вернет ** точно **, что их исходный код вернулся. Для всех, кого мы знаем, кто-то на принимающей стороне выполняет проверку 'type()' результатов ;-) –

+1

В этом случае, они правильны. – BrenBarn

5

«возвратному значение сценарий» не отличается от любого другого:

return 1 if somefunc(d1, d2) > 32 else 0 

Если по какой-то причине вы хотите лямбда:

lambda d1, d2: 1 if somefunc(d1, d2) > 32 else 0 

Обратите внимание, что лямбда не отличается, чем функция, определенная с помощью def, которая возвращает то же самое. Лямбда - это просто регулярные функции.

-1

Включите в lambda (а не явной функции):

accept = lambda d1,d2: 1 if somefunc(d1, d2) > 32 else 0 
+0

Лямбда-это функция. – BrenBarn

Смежные вопросы