加权搜索和排序Python

时间:2013-02-25 22:53:09

标签: python sorting search artificial-intelligence

我在python中创建了一个生物模拟器,我要做的第一件事就是搜索食物。当然,要搜索的东西之一是距离,但我也想根据食物来源的质量进行排序。有没有办法做到这一点?我想我会得到所有可能来源的列表,然后对列表进行排序,我知道python已经内置了排序函数,但我真的不了解它的lambda部分。

1 个答案:

答案 0 :(得分:2)

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

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

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

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