这两个python实现之间的区别?

时间:2015-07-10 01:17:25

标签: python bigdata pyspark

我正在开发一个与Big Data和pyspark相关的在线MOOC。我遇到了这两个函数的实现,然后传递给filter()转换。

def ten(value):
"""Return whether value is below ten.

Args:
    value (int): A number.

Returns:
    bool: Whether `value` is less than ten.
"""
if (value < 10):
    return True
else:
    return False

这个函数的第二个实现很简单,

def ten(value): return value < 10

或等效地用作filter()转换中的lambda函数

lambdaRDD = subRDD.filter(lambda x: x < 10)

现在,我的问题是第一个实现返回一个布尔值,第二个实现返回一个输入数字,如果它小于10。 现在,据我所知,过滤器转换返回那些在执行传递给它的函数时返回TRUE的输入。那么函数的第二个实现如何与过滤器转换一起工作?因为这会返回一个数字? 如果我对过滤器功能或功能返回类型的理解是错误的,请告诉我。

1 个答案:

答案 0 :(得分:2)

ten函数的两个实现都是等效的。第一个使用完整的if块,第二个使用单行,但都使用相同的行:返回布尔值。与lambda函数相同,如果数字小于10则true,否则为false