新闻中心

python3.5中cmp怎么用

2025-12-09
浏览次数:
返回列表
Python 3.5 中 cmp() 函数已被彻底移除,应使用比较运算符或 functools.cmp_to_key() 替代;自定义排序优先用 key 参数,类比较需实现 lt__、__eq 等富比较方法。

python3.5中cmp怎么用

Python 3.5 中 没有 cmp() 函数,它在 Python 3.0 就被彻底移除了。

官方明确说明:cmp() 函数应被视为“已消失”,__cmp__() 特殊方法也不再支持。

所以你不能直接写 cmp(a, b),会报错:

>>> cmp(1, 2)
NameError: name 'cmp' is not found

替代方案:用比较运算符或 functools.cmp_to_key

✅ 推荐方式:用 functools.cmp_to_key() 配合 sorted()list.sort()

如果你原本想用 cmp 做自定义排序(比如按绝对值、按字符串长度、按多条件),现在要改写成「返回布尔逻辑」的 key 函数,或用 cmp_to_key 包装旧式比较逻辑。

立即学习“Python免费学习笔记(深入)”;

例如,按绝对值升序排序:

Flex3组件和框架的生命周期 中文WORD版 Flex3组件和框架的生命周期 中文WORD版

在整本书中我们所涉及许多的Flex框架源码,但为了简洁,我们不总是显示所指的代码。当你阅读这本书时,要求你打开Flex Builder,或能够访问Flex3框架的源码,跟随着我们所讨论源码是怎么工作及为什么这样做。 如果你跟着阅读源码,请注意,我们经常跳过功能或者具体的代码,以便我们可以对应当前的主题。这样能防止我们远离当前的主题,主要是讲解代码的微妙之处。这并不是说那些代码的作用不重要,而是那些代码处理特别的案例,防止潜在的错误或在生命周期的后面来处理,只是我们当前没有讨论它。有需要的朋友可以下载看看

Flex3组件和框架的生命周期 中文WORD版 0 查看详情 Flex3组件和框架的生命周期 中文WORD版
from functools import cmp_to_key

def my_cmp(x, y):
    if abs(x) < abs(y):
        return -1
    elif abs(x) == abs(y):
        return 0
    else:
        return 1

nums = [-5, 3, -1, 4]
sorted_nums = sorted(nums, key=cmp_to_key(my_cmp))
print(sorted_nums)  # [-1, 3, 4, -5]

⚠️ 注意:你的 my_cmp 函数语义要和老 cmp() 一致 —— 返回 -1 / 0 / 1

✅ 更简洁的方式:优先用 key 参数(不用 cmp)

大多数场景其实不需要写比较函数,直接用 key 更清晰:

# 按长度排序字符串
words = ['hi', 'hello', 'a']
words.sort(key=len)  # ['a', 'hi', 'hello']

# 按第二项排序元组
pairs = [('x', 3), ('y', 1), ('z', 2)]
sorted_pairs = sorted(pairs, key=lambda x: x[1])  # [('y', 1), ('z', 2), ('x', 3)]

❌ 不要用 __cmp__ 方法

Python 3 已废弃 __cmp__。自定义类比较应实现富比较方法,如:

class Person:
    def __init__(self, name, age):
        self.name = name
        self.age = age

    def __lt__(self, other):  # 支持 <
        return self.age < other.age

    def __eq__(self, other):  # 支持 ==
        return self.age == other.age

这样就能用于 sorted() min() 等函数。


补充:为什么删掉 cmp()

  • 容易混淆(返回 -1/0/1,而不是布尔值)
  • key 参数更直观、高效、可读性更强
  • 富比较方法(__lt__, __eq__ 等)让对象行为更明确、更符合直觉

基本上就这些。不复杂但容易忽略:Python 3 里真没 cmp(),别找它了,用 keycmp_to_key 就对了。

以上就是python3.5中cmp怎么用的详细内容,更多请关注其它相关文章!


# 考试试卷  # 浙江发展营销推广策划方案  # 婚庆行业seo推广案例  # 引流推广电话营销  # 怎么优化企业网站seo  # 布吉网站建设价格表  # 分钟寺网络营销推广方案  # 韩城租房网站建设管理  # 短视频seo优化贴牌  # 拼多多营销推广进阶答案  # 郑州SEO学习好物  # 就能  # 升序  # word  # 中带  # 移除  # 自动生成  # 如果你  # 自定义  # 运算符  # 文档  # elif  # 为什么  # ai  # python 


相关栏目: 【 科技资讯46185 】 【 网络学院92790


相关推荐: 蛙漫2台版漫画地址 Manwa2正版网页版链接  中兴Axon42Ultra怎样在文件App筛图_iPhone中兴Axon42Ultra文件App筛图【图片筛选】  随机参数递归函数的基准调用次数与时间复杂度探究  c++如何实现一个简单的ECS框架_c++数据驱动设计与游戏开发  Python多版本共存与虚拟环境管理深度指南  漫蛙漫画网页端入口 漫蛙2官方正版漫画站点  J*a TimerTask文件监控:HashMap状态管理与常见陷阱规避指南  如何使用 Excel 发布器与 Power BI 分享 Excel 洞察  c++如何使用TBB库进行任务并行_c++ Intel线程构建模块  Adobe PDF表单中利用J*aScript解析与格式化日期组件的教程  CSS Flexbox与媒体查询:实现响应式布局中元素的并排与堆叠  PowerPoint如何制作滚动字幕结尾彩蛋_PowerPoint路径动画实现平滑滚动字幕效果  《马克思佩恩3》早期版本曝光 UI设计曾多次调整!  Node.js中HTML按钮与J*aScript函数交互的正确姿势  Log4j Console Appender性能瓶颈与高并发优化策略  抓大鹅解压小游戏 抓大鹅摸鱼解压入口  如何设置Windows Defender的定时扫描_计划任务实现自动杀毒【安全】  Kafka Streams中基于消息头条件过滤消息的实现指南  向日葵客户端怎么进行远程CentOS控制_向日葵客户端远程CentOS控制操作教程  怎么去除衣服上的口红印_生活小妙招教你用酒精轻松擦除  iCloud登录入口网页版 苹果iCloud官网登录  1688商家版怎样分析买家画像精准供货_1688商家版分析买家画像精准供货【供货策略】  内存检查:在VS Code中调试C++时的内存视图  Safari浏览器输入栏卡顿如何解决 Safari搜索建议与缓存清理  怎么在html里运行vbs脚本_html中运行vbs脚本方法【教程】  深入理解Google Cloud Datastore查询:祖先路径与数据一致性  163邮箱注册官网 免费申请163个人邮箱  React Hooks最佳实践:动态组件状态管理的组件化方案  Lar*el头像管理:图片缩放与旧文件删除的最佳实践  钉钉视频会议声音异常如何处理 钉钉会议音频修复技巧  高德地图怎么看全景照片_高德地图全景照片浏览教程  聚水潭ERP登录页面入口 聚水潭ERP官网登录界面  深入理解J*aScript Promise异步执行与微任务队列  抖音网页版企业服务中心登录入口_抖音网页版企业登录平台  Win11怎么查看电脑配置_Win11硬件配置检测工具使用  提升Kafka消费者健壮性:会话超时处理与消息处理语义  sublime如何配置Go语言开发环境_sublime搭建Golang编译运行系统  《北京人工智能产业白皮书(2025)》发布:全年核心产值预计突破 4500 亿元  Win11怎么设置开机NumLock亮 Win11修改注册表InitialKeyboardIndicators值  特斯拉自动驾驶房车计划曝光 原型车将于2027年亮相  一加 Nord 5 隐私权限异常_一加 Nord 5 系统安全优化  哔哩哔哩忘记密码了怎么找回_哔哩哔哩密码找回方法  Golang指针如何与map组合使用_Golang map指针组合实践  单射、满射与双射的关系 一文理清所有逻辑  必由学官网首页入口 必由学教师网页版登录指南  AO3最新镜像入口 Archive of Our Own官方平台访问  浏览器打开即用 美图秀秀网页版入口  mc.js免安装版 mc.js一键畅玩入口  FullCalendar 自定义按钮样式定制指南  俄罗斯Yandex搜索引擎入口_Yandex官网免登录一键访问 

搜索