【问题标题】:Weighted Search and Sort Python加权搜索和排序 Python
【发布时间】:2013-02-11 06:04:52
【问题描述】:

我正在用python创建一个生物模拟器,我做的第一件事就是寻找食物。自然地,要搜索的内容之一是距离,但我也想按食物来源的质量进行排序。有没有好的方法来做到这一点?我想我会得到一个所有可能来源的列表,然后对列表进行排序,我知道 python 已经内置了排序函数,但我不太了解它的 lambda 部分。

【问题讨论】:

    标签: python sorting search artificial-intelligence


    【解决方案1】:

    lambda(您不必使用 lambda,您可以使用命名函数)是您插入效用计算的地方。创建一个函数,首先根据距离和质量为食物来源分配分数,然后将其作为“键”传递给排序函数以根据它对列表进行排序。重要的是你可以将你的效用计算表达为一个产生可排序输出(如数字分数)的函数——如果你不能,那么你就没有任何可以排序的依据。

    例如,一个简单的效用函数是基于质量减去距离的评分:

    sources.sort(key=lambda source: source.quality - source.distance, reverse=true)
    

    reverse=true是因为这个函数给更好的选项分配了更高的分数;您可以随意反转您的实用方法(“距离减去质量”)并将其排除在外。 source.distance 当然必须替换为某种函数来计算相对于当前位置的距离。

    【讨论】:

    • 非常感谢。我假设源将与源中的源相关,因为它 key=lambda 知道只迭代源?
    • 是的,“source”是 lambda 参数的名称,就像 def utility_function(source) 在单独的行上一样。并且 sort 函数一次将可排序集合的单个项目作为第一个参数传递给 key 函数,并且 key 函数产生一个值(通常是一个数字)。然后 sort 函数使用这些生成的值对集合进行排序。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-11-28
    • 1970-01-01
    • 2020-08-13
    • 1970-01-01
    • 1970-01-01
    • 2020-01-18
    • 2020-11-26
    相关资源
    最近更新 更多