lambda中的布尔值评估

Sil*_*ntW 8 python lambda

只是为了自己的娱乐工具,我想使用lambda,因为我觉得它.我可以用lambda替换这个函数吗?

def isodd(number):
    if (number%2 == 0):
        return False
    else:
        return True
Run Code Online (Sandbox Code Playgroud)

小学,是的.但我很想知道......

Ale*_*erg 14

如果你真的不需要一个功能,即使没有lambda也可以替换它.:)

(number % 2 != 0)
Run Code Online (Sandbox Code Playgroud)

本身是一个计算结果为True或False的表达式.甚至更平坦,

bool(number % 2)
Run Code Online (Sandbox Code Playgroud)

你可以这样简化:

if number % 2:
    print "Odd!"
else:
    print "Even!"
Run Code Online (Sandbox Code Playgroud)

但是,如果那可读或不可能是旁观者的眼睛.

  • http://docs.python.org/library/stdtypes.html - "以下值被视为false:...任何数字类型的零,例如,0" (3认同)

Tom*_*zuk 9

是的你可以:

isodd = lambda x: x % 2 != 0
Run Code Online (Sandbox Code Playgroud)


for*_*ran 6

并且不要忘记您可以使用简单的短路逻辑模拟复杂的条件句,利用“and”和“or”返回它们的一些元素(最后一个评估的元素)......例如,在这种情况下,假设您想返回与 True 或 False 不同的内容

lambda x: x%2 and "Odd" or "Even"
Run Code Online (Sandbox Code Playgroud)


Moe*_*Moe 5

isodd = lambda number: number %2 != 0
Run Code Online (Sandbox Code Playgroud)


Pav*_*aev 5

其他人已经给你回复了你的具体案例.但一般情况下,当你真正需要if语句来,你可以使用条件表达式.例如,如果你不得不返回字符串"False""True",而不是布尔值,你可以这样做:

lambda num: "False" if num%2==0 else "True"
Run Code Online (Sandbox Code Playgroud)

Python语言参考中此表达式的定义如下:

表达式x if C else y首先评估C(不x); if C为true,x进行求值并返回其值; 否则,y将评估其值并返回其值.