【问题标题】:Difference between these two python implementations?这两个python实现之间的区别?
【发布时间】:2015-07-10 01:17:24
【问题描述】:

我正在研究与大数据和 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 的输入。那么该函数的第二个实现如何与过滤器转换一起工作?因为这会返回一个数字? 如果我对过滤函数或函数返回类型的理解有误,请告诉我。

【问题讨论】:

  • 所有 3 个函数都返回布尔值
  • 如果我将第二个/第三个函数的结果存储在一个变量中,它会是一个数字吗?
  • 没有。你可以试试看。 def ten(value): return value &lt; 10ten(some_number) 返回一个布尔值。如果将 lambda 分配给变量 ten_filter = lambda x: x &lt; 10 并调用 ten_filter(some_number),它将返回相同的布尔值

标签: python bigdata pyspark


【解决方案1】:

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

【讨论】:

  • 但是,第二个实现返回一个数字还是布尔值?
  • 一个布尔值,它们都返回一个布尔值。
  • 知道了,谢谢,value
猜你喜欢
  • 1970-01-01
  • 2010-12-27
  • 1970-01-01
  • 2017-07-01
  • 2013-11-22
  • 2014-06-02
  • 2018-06-12
  • 1970-01-01
相关资源
最近更新 更多