python 列表比较不同_使用Python中的自定义比较功能对列表进行排序
由于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中的自定义比较功能对列表进行排序相关推荐
- python 判断数字连续_关于python:检测列表中的连续整数
本问题已经有最佳答案,请猛点这里访问. 我有一个包含这样的数据的列表: [1, 2, 3, 4, 7, 8, 10, 11, 12, 13, 14] 我想打印出连续整数的范围: 1-4, 7-8, 1 ...
- python从键盘输入一个列表计算输出元素的平均值_python列表查找值_在Python中查找列表平均值的5种方法...
python列表查找值 Hi Folks! In this article, we will have a look at the various ways to find the average o ...
- python之禅 中文_《Python之禅》中对于Python编程过程中的一些建议
<Python之禅>中对于Python编程过程中的一些建议 来源:中文源码网 浏览: 次 日期:2018年9月2日 [下载文档: <Python之禅>中对于Pyt ...
- python list存储对象_《python解释器源码剖析》第4章--python中的list对象
4.0 序 python中的list对象,底层对应的则是PyListObject.如果你熟悉C++,那么会很容易和C++中的list联系起来.但实际上,这个C++中的list大相径庭,反而和STL中的 ...
- python字符串去掉空行_从python中的字符串中删除空格
python字符串去掉空行 如何在python中删除字符串中的空格 (How to remove whitespaces in a string in python) str.lstrip()str. ...
- python 打印数组变量_使用Python将数组的元素导出到变量中(unpacking)
下面就为大家分享一篇使用Python将数组的元素导出到变量中(unpacking),具有很好的参考价值,希望对大家有所帮助.一起过来看看吧 最近工作中遇到一个问题,需要利用Python将数组(list ...
- python sub 不区分大小写_解决Python列表字符不区分大小写的问题
有时候,我们需要检测一个元素是否已经存在列表中,并且不区分大小写,如:列表已有元素Mary,那我们想认为MARY也已经被占用.这个例子在实际编程中会用到很多,比如保证网站注册用户独一无二.邮件姓名独一 ...
- python列表添加元组_【Python爬虫】列表、元组、集合练习
列表: pop() 函数用于移除列表中的一个元素(默认最后一个元素),并且返回该元素的值. list.append(obj) 在列表末尾添加新的对象 list.count(obj) 统计某个元素在列表 ...
- python怎么更新数据库_在Python的Django框架中更新数据库数据的方法
先使用一些关键参数创建对象实例,如下: >>> p = Publisher(name='Apress', ... address='2855 Telegraph Ave.', ... ...
最新文章
- 年少恶习累累,成年用语言骗全世界, 用心理学撩妹, 最后被总理接见
- glibc:fd_set机制
- Python 文件操作三
- web打印控件Lodop轻松输出清晰的图表和条码
- 20200428:186周周赛下(leetcode1425)
- shedlock源码解析
- 打造一流云计算机房,【迈向“双一流”】为科研插上云计算的“翅膀”
- Java Sigar Windows 监控系统
- 服务器Java环境配置
- Java基础总结(上)
- cpu倍频怎么调_认识外频和倍频,可以极限超频,把你CPU性能发挥到最大化
- 计算机开机自检时,电脑开机启动时出现DHCP自检怎么办
- 如何抢功,甩锅,立于不败之地???
- 免费简单的在线QQ聊天
- 过万 star 高星项目的秘密——GitHub 热点速览 Vol.39
- 服务器里文件表格如何自动备份,Excel电子表格自动备份的两种方法
- 奥威软件大数据bi_2018中国大数据BI领域影响力企业 奥威实至名归
- java 媒体框架_Java 媒体框架 之 JMF
- 宽和窄俯卧撑哪个更难_宽距俯卧撑与窄距俯卧撑,练出来的肌肉有什么差距?...
- 普通程序员,如何转为当前紧缺的大数据相关人才?
热门文章
- 冯·诺依曼计算机特点
- 数学建模灵敏度分析_数学建模中的灵敏度分析,到底在分析什么?
- 红黑树为什么可以确保没有一条路径会比其他路径长出两倍
- vs2013配置opencv2.4.9后出现找不到opencv_core249d.dll和opencv_highgui249d.dll问题
- numpy方法读取加载mnist数据集
- nginx+uWSGI + django部署项目
- Python语言数据类型-----数字和字符串
- CornerNet: Detecting Objects as Paired Keypoints
- Effective Java~9. try-with-resource 优先于 try-catch
- Guava入门~MoreObjects