lambda中的布尔值评估

时间:2009-07-22 21:03:37

标签: python lambda

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

def isodd(number):
    if (number%2 == 0):
        return False
    else:
        return True

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

8 个答案:

答案 0 :(得分:13)

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

(number % 2 != 0)

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

bool(number % 2)

你可以这样简化:

if number % 2:
    print "Odd!"
else:
    print "Even!"

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

答案 1 :(得分:8)

lambda num: num % 2 != 0

答案 2 :(得分:8)

是的,你可以:

isodd = lambda x: x % 2 != 0

答案 3 :(得分:5)

isodd = lambda number: number %2 != 0

答案 4 :(得分:5)

其他人已经给你回复了你的具体案例。但是,通常,当您实际需要 if - 语句时,您可以使用条件表达式。例如,如果您必须返回字符串"False""True"而不是布尔值,则可以执行以下操作:

lambda num: "False" if num%2==0 else "True"

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

  

表达式x if C else y首先评估C(不是x);如果C为真,则计算x并返回其值;否则,将评估y并返回其值。

答案 5 :(得分:3)

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

lambda x: x%2 and "Odd" or "Even"

答案 6 :(得分:1)

isodd = lambda number: (False, True)[number & 1]

答案 7 :(得分:1)

任何时候你看到自己在写作:

if (some condition):
    return True
else:
    return False

你应该用一行替换它:

return (some condition)

您的功能将变为:

def isodd(number):
    return number % 2 != 0

你应该能够看到如何从那里获得其他人提供的lambda解决方案。