• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • vbs
  • DOS/BAT
  • hta/htc
  • python
  • perl
  • VBA
  • ColdFusion
  • ruby
  • PowerShell
  • Lua
  • Golang
  • linux shell
您的位置:首页 > 脚本语言 >python > Python3.x中自定义比较函数

Python3.x中自定义比较函数

作者:junjie 字体:[增加 减小] 来源:互联网

junjie 通过本文主要向大家介绍了python3.x下载,python3.x,python3.x教程,python3.x安装,python3.x爬虫等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

在Python3.x的世界里,cmp函数没有了。那么sorted,min,max等需要比较函数作为参数的函数该如何用呢?

以min函数的定义为例,有两种重载形式:

单参数(一个迭代器):

min(iterable[, key=func]) -> value 
</div>
多参数(多个待比较内容):

min(a, b, c, ...[, key=func]) -> value 
</div>
本文主要讨论key=func参数的使用 。举例说明吧:

1.自定义对象的比较
我定义了一个类test,有两个成员变量a和b:
class test: 
         def __init__(self,a,b): 
              self.a = a 
              self.b = b 
</div>
然后实例化了三个对象x,y,z:
x=test(10,'x') 
y=test(2,'y') 
z=test(8,'z') 
</div>
我想让它们以变量a为标准做比较,求得a最小的对象:
minTest=min(x,y,z,key=lambda t:t.a) 
</div>
由于key这个参数需要传入一个函数,用lambda匿名函数很方便。本例中要实现比较函数(准确地说是比较关键字函数),故lamda的参数只要一个,随便你取什么名字(我用的是t),代表待比较的对象(即a,b,c);冒号后面是表达式,这里直接返回t的成员变量a。

于是乎,min函数(换成max,sorted等函数也是类似的)就会根据每个待比较对象的a值进行分别比较,返回a值最小的对象(的引用)赋值给minTest。

输出一下minTest.a,minTest.b就可以验证结果啦。

2.字典值value的比较
有一个字典:
dic={'b':3,'a':5,'c':9,'d':2} 
</div>
如果要根据字典的键key排序,只要:
sorted(dic)
</div>
返回一个list,是排序后的键,但是值没有放入list:
['a', 'b', 'c', 'd'] 
</div>
用以下方法就好了:
>>> sorted(dic.items()) 
[('a', 5), ('b', 3), ('c', 9), ('d', 2)]
</div>
如果要根据值value排序呢?那么就传入比较函数这一参数就好啦:

sorted(dic.items(),key=lambda d:d[1])
</div>
我继续用lambda匿名函数。其中d表示dic.items()里的每个迭代元素,即一个元组(例如('a', 5));表达式d[1]就是元组中的第二个元素(例如5),它也是字典的值value,我们需要以它为比较标准。运行结果:
[('d', 2), ('b', 3), ('a', 5), ('c', 9)]
</div>
P.S.
博主今天闯关The Python Challenge遇到一关,需要统计文本中出现的字符个数并找出出现最少的字符。当然那一关其实不需要自己写比较函数,输出统计结果肉眼看得出。博主借助搜索引擎min函数的key=func参数时,深痛中文Python介绍文章都是旧世界Python2.x的天下,满是在新世界不能用的语法,给Python3.x的初学者带来很多误导,有害无益。故出此文。

博主也是Python初学者,如有大牛批评指正,深感荣幸。

</div>

您可能想查找下面的文章:

  • windows10系统中安装python3.x+scrapy教程
  • Python3.x中自定义比较函数
  • Python3.x版本中新的字符串格式化方法
  • Python3.x中自定义比较函数
  • Python3.x版本中新的字符串格式化方法

相关文章

  • Python操作MongoDB数据库PyMongo库使用方法
  • 基于Python的接口测试框架实例
  • Python中Django发送带图片和附件的邮件
  • Python中的True,False条件判断实例分析
  • 使用Python脚本将文字转换为图片的实例分享
  • Python中的ConfigParser模块使用详解
  • Python获取文件所在目录和文件名的方法
  • Python笔记(叁)继续学习
  • Python异常处理总结
  • 部署Python的框架下的web app的详细教程

文章分类

  • vbs
  • DOS/BAT
  • hta/htc
  • python
  • perl
  • VBA
  • ColdFusion
  • ruby
  • PowerShell
  • Lua
  • Golang
  • linux shell

最近更新的内容

    • python通过urllib2爬网页上种子下载示例
    • Linux下将Python的Django项目部署到Apache服务器
    • Python UnicodeEncodeError: 'gbk' codec can't encode character 解决方法
    • 使用PyInstaller将Python程序文件转换为可执行程序文件
    • python使用scrapy解析js示例
    • python生成指定尺寸缩略图的示例
    • Python 使用os.remove删除文件夹时报错的解决方法
    • Python多进程同步简单实现代码
    • 举例讲解Python中的迭代器、生成器与列表解析用法
    • Python缩进和冒号详解

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有