1
>>> def accept(d1, d2):
    if somefunc(d1,d2) > 32:
        h = 1
    else:
        h = 0
    return h

Does Python have a ternary conditional operator? doesn't give a solution for a case one want to return a value. A lambda based solution is preferable.

4

3 に答える 3

5

「戻り値のシナリオ」は他のシナリオと変わりません。

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

何らかの理由でラムダが必要な場合:

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

defラムダは、同じものを返すで定義された関数と変わらないことに注意してください。ラムダは単なる通常の関数です。

于 2013-10-06T21:03:13.573 に答える
3

または、おそらくよりトリッキーな、

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

と に注意してint(True) == 1くださいint(False) == 0

于 2013-10-06T21:06:50.833 に答える
-1

Turn into a lambda (not a explicit function):

accept = lambda d1,d2: 1 if somefunc(d1, d2) > 32 else 0
于 2013-10-06T21:05:27.497 に答える