1

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

4

1 回答 1

2

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

例如,一个简单的效用函数是根据质量减去距离进行评分:

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

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

于 2013-02-25T22:59:42.243 回答