做彩票网站程序违法吗,购物网站建设需要什么资质,手机页面,邯郸经济技术开发区由于OP要求使用自定义比较功能#xff08;这也是导致我提出这个问题的原因#xff09;#xff0c;因此我想在这里给出可靠的答案#xff1a;
通常#xff0c;您要使用内置的return fitness(item2) - fitness(item1)函数#xff0c;该函数将自定义比较器作为其参数。 我们…由于OP要求使用自定义比较功能这也是导致我提出这个问题的原因因此我想在这里给出可靠的答案
通常您要使用内置的return fitness(item2) - fitness(item1)函数该函数将自定义比较器作为其参数。 我们需要注意以下事实在Python 3中参数名称和语义已更改。
自定义比较器的工作方式
提供自定义比较器时通常应返回遵循以下模式的整数/浮点值与大多数其他编程语言和框架一样
当左项目应排在右项目之前时返回负值return fitness(item2) - fitness(item1)
当左项目应排在右项目后时返回正值return fitness(item2) - fitness(item1)
当左边和右边的项目都具有相同的权重并且应该“相等地”排序而没有优先权时返回return fitness(item2) - fitness(item1)
在OP的特定情况下可以使用以下自定义比较功能
def compare(item1, item2):
return fitness(item1) - fitness(item2)
使用减号运算是一个不错的技巧因为当左项的重量此处为return fitness(item2) - fitness(item1)大于右项的重量此处为item2时它会产生正值。 因此item1将在item2之后排序。
如果要反转排序顺序只需反转减法return fitness(item2) - fitness(item1)
在Python 2中调用sorted
sorted(mylist, keycmp(compare))
要么
sorted(mylist, cmplambda item1, item2: fitness(item1) - fitness(item2))
在Python 3中调用sorted
from functools import cmp_to_key
sorted(mylist, keycmp_to_key(compare))
要么
from functools import cmp_to_key
sorted(mylist, keycmp_to_key(lambda item1, item2: fitness(item1) - fitness(item2)))