我正在开发一个与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的输入。那么函数的第二个实现如何与过滤器转换一起工作?因为这会返回一个数字? 如果我对过滤器功能或功能返回类型的理解是错误的,请告诉我。
答案 0 :(得分:2)
ten
函数的两个实现都是等效的。第一个使用完整的if
块,第二个使用单行,但都使用相同的行:返回布尔值。与lambda函数相同,如果数字小于10则true
,否则为false
。