Python基础篇之__cmp__
来源:互联网 发布:医学数据分析是搞什么 编辑:程序博客网 时间:2024/06/07 11:01
python中 __cmp__
对 int、str 等内置数据类型排序时,Python的 sorted() 按照默认的比较函数 cmp 排序,但是,如果对一组 Student 类的实例排序时,就必须提供我们自己的特殊方法 __cmp__():
class Student(object):
def __init__(self, name, score):
self.name = name
self.score = score
def __str__(self):
return ‘(%s: %s)’ % (self.name, self.score)
__repr__ = __str__
def __cmp__(self, s): if self.name < s.name: return -1 elif self.name > s.name: return 1 else: return 0
上述 Student 类实现了__cmp__()方法,__cmp__用实例自身self和传入的实例 s 进行比较,如果 self 应该排在前面,就返回 -1,如果 s 应该排在前面,就返回1,如果两者相当,返回 0。
Student类实现了按name进行排序:
L = [Student(‘Tim’, 99), Student(‘Bob’, 88), Student(‘Alice’, 77)]
print sorted(L)
[(Alice: 77), (Bob: 88), (Tim: 99)]
注意: 如果list不仅仅包含 Student 类,则 __cmp__ 可能会报错:
L = [Student(‘Tim’, 99), Student(‘Bob’, 88), 100, ‘Hello’]
print sorted(L)
请思考如何解决。
- Python基础篇之__cmp__
- python中 __cmp__
- python学习之基础篇
- python 基础篇之二
- python之函数基础篇
- Python爬虫之基础篇
- python基础之函数篇
- Python字符串之基础篇
- python基础篇之变量
- python基础篇之字符串
- Python基础篇之dict
- Python基础篇之set
- Python基础篇之函数
- Python基础篇之切片
- Python基础篇之模块
- Python基础篇之__len__
- Python基础篇之__slots__
- Python基础篇之__call__
- ESP8266 webserver
- js的常用方法总结(一)
- Nodejs管理工具PM2问题记录
- Android TextView和Button的使用方法
- 测试
- Python基础篇之__cmp__
- 阻塞消息队列LinkedBlockingQueue主要方法
- k8s 与 grpc
- mybatis+easyUI实现分页
- 基于JavaMail的Java邮件发送:简单邮件发送
- Thinking in Java:第六章-访问控制权限
- VTK:读取raw图片格式进行体绘制
- linux c下,从路径名中分离文件名
- 在JS写的HTML标签当中无法传递对象,或者是数组