2

我尝试了 2 个片段来找出 python lambda 和常规函数之间的区别。

这个得到了预期的结果。

b = range(6)
def greater_than2(b):
    if b > 2:
        return b

print(list(filter(lambda x: x > 2, b)))
print(list(filter(greater_than2, b)))

两个打印都给出 [3, 4, 5]。

但是这个有一些东西

b = range(6)

def less_than2(b):
    if b < 2:
        return b

print(list(filter(lambda x: x < 2, b)))
print(list(filter(less_than2, b)))

我得到以下输出

[0, 1]
[1]

那么,lambda 和 less_than2 函数有什么区别呢?

4

1 回答 1

3

您的函数不可比较,greater_than2需要返回一个布尔值:

def greater_than2(b):
    return b > 2

上面定义的函数将返回Truewhenb > 2Falsewhen b <= 2

您的常规函数​​返回b. 让我们考虑一下您的第二个示例会发生什么,您会在其中看到差异:

b = 0:less_than2返回0
b = 1:less_than2返回1
b = 2:less_than2返回None
...
b = 5:less_than2返回None

请注意,如果您的if条件不满足,return则永远不会满足语句,因此您的函数将返回None。这些返回值的唯一“真实”值是1asbool(0)bool(None)评估为False

于 2018-10-30T14:41:00.633 回答