因此,我有一个健身函数(仅返回给定参数的真或错),我想用作对可能的参数列表进行排序的键。虽然通常,我可以做类似:
的事情sorted(possibleArguments, key = fitnessFunction)
在这里,我的健身功能看起来像这样:
def fitnessFunction(arg1, arg2, f):
return f(*arg1) < f(*arg2)
当然,在我要使用分类的方法中,要计算健身的功能是已知的,并且在排序过程中不会改变,但是我可以以某种方式告诉Python是这样的吗?我可以做类似的事情:
sorted(possibleArguments, key = fitnessFunction(one element to be compared, the other one, function I'm currently interested in))
如果是这样,如何?
key
不采用比较功能,它将列表的元素转换为可比的项目。
顺便说一句,不再有可能将比较函数传递给Python 3中的sort
(并且__cmp__
方法也从对象中消失了),因此您最好习惯它(很麻烦,您必须返回0,如果等于0,如果等于0消极的话,较小,如果更大的话,有点像strcmp
一样,古老。您可以创建复杂的比较功能,但它们可以揭示不稳定的功能。我肯定不会错过它们)。
幸运的是,您的f()
功能就足够了。
在您的情况下,您只需要这样做:
sorted(possibleArguments, key = lambda x : f(*x))
比较由sort
函数完成。无需fitnessFunction