【问题标题】:Get the item that maximizes a function together with the maximized value from a python list [duplicate]从python列表中获取最大化函数的项目以及最大化值[重复]
【发布时间】:2020-11-14 10:04:56
【问题描述】:

正如下面的代码,我知道如何从列表中获取最大化函数的项目,但我也想与项目一起获取最大化的值。实际上,我有一个计算量很大的函数,所以我不想再次运行该函数。这里我只是以一个sigmoid函数为例。

import math

lst = list(range(100))
maxnum = max(lst, key=lambda x: 1 / (1 + math.exp(-x)))
maxval = 1 / (1 + math.exp(-maxnum))
print(maxnum, maxval)

【问题讨论】:

    标签: python list lambda key max


    【解决方案1】:

    使用一个元组存储maxnummaxval,如下,然后将第二个位置的值作为键传递(在下面的代码中使用itemgetter):

    import math
    from operator import itemgetter
    
    lst = list(range(100))
    
    
    def sigmoid(x):
        return 1 / (1 + math.exp(-x))
    
    result = max((e, sigmoid(e))  for e in lst, key=itemgetter(1))
    
    
    print(result)
    

    输出

    (37, 1.0)
    

    【讨论】:

    • 这是一个很好的答案。只是好奇,是否仍然可以使用 lambda 表达式?
    • 你想在哪里使用 lambda 表达式?您可以通过 lambda 表达式更改 itemgetter,但不确定您的意思
    • 我收到错误“如果不是唯一参数,则生成器表达式必须用括号括起来”。
    • result = max(((e, sigmoid(e)) for e in lst), key=itemgetter(1)) 为我工作
    猜你喜欢
    • 1970-01-01
    • 2021-09-08
    • 1970-01-01
    • 1970-01-01
    • 2023-03-30
    • 1970-01-01
    • 2017-09-25
    • 1970-01-01
    • 2020-12-24
    相关资源
    最近更新 更多