【问题标题】:how does Lambda work in python with max function?Lambda 如何在带有 max 函数的 python 中工作?
【发布时间】:2019-02-27 14:30:40
【问题描述】:
stocks ={
    'BMW':40 ,
    'FB': 90 ,
    'whatsapp':100,
    'Apple':30
    }
print("lowest stock is : " , min(stocks ,key =lambda x:stocks[x]) )

这段代码有效,但我需要知道 lambda 在这种情况下是如何工作的,我知道它接受一个参数,然后返回结果,即表达式 ,所以我的问题是这个例子中 lambda 的参数是什么 'x',这个参数是否也改变了。我的意思是 min 函数在运行时会改变它。所以当第一次调用 min 时,值是多少的 x.thanks 提前。

【问题讨论】:

  • lambda 并不是在这里施展魔法的人。 Lambda 只是一个没有名字的函数。对于传递给它的每个项目 x,它都会尝试访问该 x 的 stocks[x]。需要注意的主要是min 接受一个函数作为key 来评估哪个值最小。
  • 无关,但你也可以只做key=stocks.get
  • max()函数的documentation的哪一部分你不明白?在您的代码中,x 将是 stocks 字典中的项目之一。

标签: python python-3.x lambda max


【解决方案1】:

来自https://www.programiz.com/python-programming/methods/built-in/min

  1. min(iterable, *iterables[, key, default])
    • iterable - 序列(元组、字符串)、集合(集合、字典)或要找到其最小元素的迭代器对象
    • *iterables (可选) - 可以找到最小的任意数量的iterables
    • key(可选)- 传递可迭代对象并根据其返回值执行比较的关键函数
    • default(可选)- 如果给定的可迭代对象为空,则为默认值

调用min(stocks, key= lambda x:stocks[x]) 是通过比较函数lambda x:stocks[x] 的结果来查找stocks 中的最小元素,该函数只是一个匿名函数,它返回股票的给定的密​​钥。所以对min 的调用会返回价值最小的股票。

另见Get the key corresponding to the minimum value within a dictionaryhttp://www.aroseartist.com/python-dictionary-max-min/

【讨论】:

    【解决方案2】:

    您的 min() 函数将一个可迭代的参数作为第一个参数(在本例中为“stocks”字典)。

    第二个参数“key = lambda x:stocks[x]”是一个函数,它根据应该评估的最小值来指定。

    基本上 x 采用以下值('BMW' 'FB' 'whatsapp' 'Apple'),而 lambda 函数返回值 (40 90 100 30)。 30 是最小值,因此您的 min() 函数将返回该值的“key”,即“Apple”(不要与“key”混淆,后者是 min() 函数中的一个参数)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-07-01
      • 2018-06-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-05-06
      • 1970-01-01
      相关资源
      最近更新 更多