由于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, key=cmp(compare))

要么:

sorted(mylist, cmp=lambda item1, item2: fitness(item1) - fitness(item2))

在Python 3中调用sorted()

from functools import cmp_to_key

sorted(mylist, key=cmp_to_key(compare))

要么:

from functools import cmp_to_key

sorted(mylist, key=cmp_to_key(lambda item1, item2: fitness(item1) - fitness(item2)))

python 列表比较不同_使用Python中的自定义比较功能对列表进行排序相关推荐

  1. python 判断数字连续_关于python:检测列表中的连续整数

    本问题已经有最佳答案,请猛点这里访问. 我有一个包含这样的数据的列表: [1, 2, 3, 4, 7, 8, 10, 11, 12, 13, 14] 我想打印出连续整数的范围: 1-4, 7-8, 1 ...

  2. python从键盘输入一个列表计算输出元素的平均值_python列表查找值_在Python中查找列表平均值的5种方法...

    python列表查找值 Hi Folks! In this article, we will have a look at the various ways to find the average o ...

  3. python之禅 中文_《Python之禅》中对于Python编程过程中的一些建议

    <Python之禅>中对于Python编程过程中的一些建议 来源:中文源码网    浏览: 次    日期:2018年9月2日 [下载文档:  <Python之禅>中对于Pyt ...

  4. python list存储对象_《python解释器源码剖析》第4章--python中的list对象

    4.0 序 python中的list对象,底层对应的则是PyListObject.如果你熟悉C++,那么会很容易和C++中的list联系起来.但实际上,这个C++中的list大相径庭,反而和STL中的 ...

  5. python字符串去掉空行_从python中的字符串中删除空格

    python字符串去掉空行 如何在python中删除字符串中的空格 (How to remove whitespaces in a string in python) str.lstrip()str. ...

  6. python 打印数组变量_使用Python将数组的元素导出到变量中(unpacking)

    下面就为大家分享一篇使用Python将数组的元素导出到变量中(unpacking),具有很好的参考价值,希望对大家有所帮助.一起过来看看吧 最近工作中遇到一个问题,需要利用Python将数组(list ...

  7. python sub 不区分大小写_解决Python列表字符不区分大小写的问题

    有时候,我们需要检测一个元素是否已经存在列表中,并且不区分大小写,如:列表已有元素Mary,那我们想认为MARY也已经被占用.这个例子在实际编程中会用到很多,比如保证网站注册用户独一无二.邮件姓名独一 ...

  8. python列表添加元组_【Python爬虫】列表、元组、集合练习

    列表: pop() 函数用于移除列表中的一个元素(默认最后一个元素),并且返回该元素的值. list.append(obj) 在列表末尾添加新的对象 list.count(obj) 统计某个元素在列表 ...

  9. python怎么更新数据库_在Python的Django框架中更新数据库数据的方法

    先使用一些关键参数创建对象实例,如下: >>> p = Publisher(name='Apress', ... address='2855 Telegraph Ave.', ... ...

最新文章

  1. 年少恶习累累,成年用语言骗全世界, 用心理学撩妹, 最后被总理接见
  2. glibc:fd_set机制
  3. Python 文件操作三
  4. web打印控件Lodop轻松输出清晰的图表和条码
  5. 20200428:186周周赛下(leetcode1425)
  6. shedlock源码解析
  7. 打造一流云计算机房,【迈向“双一流”】为科研插上云计算的“翅膀”
  8. Java Sigar Windows 监控系统
  9. 服务器Java环境配置
  10. Java基础总结(上)
  11. cpu倍频怎么调_认识外频和倍频,可以极限超频,把你CPU性能发挥到最大化
  12. 计算机开机自检时,电脑开机启动时出现DHCP自检怎么办
  13. 如何抢功,甩锅,立于不败之地???
  14. 免费简单的在线QQ聊天
  15. 过万 star 高星项目的秘密——GitHub 热点速览 Vol.39
  16. 服务器里文件表格如何自动备份,Excel电子表格自动备份的两种方法
  17. 奥威软件大数据bi_2018中国大数据BI领域影响力企业 奥威实至名归
  18. java 媒体框架_Java 媒体框架 之 JMF
  19. 宽和窄俯卧撑哪个更难_宽距俯卧撑与窄距俯卧撑,练出来的肌肉有什么差距?...
  20. 普通程序员,如何转为当前紧缺的大数据相关人才?

热门文章

  1. 冯·诺依曼计算机特点
  2. 数学建模灵敏度分析_数学建模中的灵敏度分析,到底在分析什么?
  3. 红黑树为什么可以确保没有一条路径会比其他路径长出两倍
  4. vs2013配置opencv2.4.9后出现找不到opencv_core249d.dll和opencv_highgui249d.dll问题
  5. numpy方法读取加载mnist数据集
  6. nginx+uWSGI + django部署项目
  7. Python语言数据类型-----数字和字符串
  8. CornerNet: Detecting Objects as Paired Keypoints
  9. Effective Java~9. try-with-resource 优先于 try-catch
  10. Guava入门~MoreObjects