只是为了自己的娱乐工具,我想使用lambda,因为我觉得它。我可以用lambda替换这个函数吗?
def isodd(number):
if (number%2 == 0):
return False
else:
return True
小学,是的。但我很想知道......
答案 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解决方案。