Python,使用比较函数查找最佳对象

2024-09-30 12:11:50 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个函数,它接受两个对象作为参数:ab 该函数检查(使用很长的算法)这些对象中的哪一个更好。你知道吗

如果a更好它返回-1,如果b更好它返回1,如果他们平手它返回0

我的问题是:

我有21个这样的对象在一个列表中。你知道吗

我需要找出,使用上面的函数(函数不能 改变了,唯一的方法就是比较两个物体,这是一个非常复杂的问题 和长算法),这21个对象中哪一个是最好的。你知道吗

我花了好几个小时思考如何高效地完成这项工作,而不必做太多次相同的比较,如何编写一个算法,找出哪一个是最好的(如果两个并列,而且两个都是最好的,那么选择哪一个并不重要,尽管我认为并列甚至不可能发生),但我没能来有什么好的吗。你知道吗

函数名为handCompare(a, b) 对象在名为Combos的列表中找到,len(combos)是21 我需要一个算法,将找出组合列表中的最佳项目

感谢您的阅读,我希望您能帮助:)


Tags: 项目对象方法函数算法列表参数len
2条回答

最简单的方法是:用比较函数__cmp__(python2.x)或define __lt____eq__(python3.x)为每个对象创建一个对象。把每一个都藏在一个名为list\的列表中。用min(list)求最小值。你知道吗

一个可能有用的优化,如果可行的话:如果你能想出一种方法将你的对象映射到(可能是大的)整数,比如x的整数是<;y的整数,如果原始对象ox是<;原始对象oy,那么取一个最小的整数。如果对你的类型可行的话,这应该会稍微加快速度。你知道吗

如果将hand_compare()更改为返回1(如果a更好)和-1(如果b更好),则这将起作用。你知道吗

import functools
best = max(combos, key=functools.cmp_to_key(hand_compare))

相关问题 更多 >

    热门问题