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

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版
在整本书中我们所涉及许多的Flex框架源码,但为了简洁,我们不总是显示所指的代码。当你阅读这本书时,要求你打开Flex Builder,或能够访问Flex3框架的源码,跟随着我们所讨论源码是怎么工作及为什么这样做。 如果你跟着阅读源码,请注意,我们经常跳过功能或者具体的代码,以便我们可以对应当前的主题。这样能防止我们远离当前的主题,主要是讲解代码的微妙之处。这并不是说那些代码的作用不重要,而是那些代码处理特别的案例,防止潜在的错误或在生命周期的后面来处理,只是我们当前没有讨论它。有需要的朋友可以下载看看
0
查看详情
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()?key 参数更直观、高效、可读性更强__lt__, __eq__ 等)让对象行为更明确、更符合直觉基本上就这些。不复杂但容易忽略:Python 3 里真没 cmp(),别找它了,用 key 或 cmp_to_key 就对了。
以上就是python3.5中cmp怎么用的详细内容,更多请关注其它相关文章!
相关文章:
极速漫画官方主页网址 极速漫画漫画在线浏览官网链接
在J*a中如何开发简易仓库管理与库存统计_仓库管理库存统计项目实战解析
TikTok搜索结果不显示如何解决 TikTok搜索刷新优化方法
深入理解字体排版:Adobe光学字偶距与CSS字偶距的差异与实现
Win11截图该按哪些键 Win11截屏完整流程解析【教程】
台积电1.4nm工艺A14瞄准2028:10年来性能提升80%
J*aScript map 方法中处理循环元素为空数组的策略
如何在复杂的电商平台中优雅地管理共享资源并确保正确重定向,使用spryker-shop/resource-share-page模块助你一臂之力
qq游戏手机版下载安装_qq游戏移动端入口
DLsite中文平台入口 DLsite官网内容在线查看
css子元素高度不一致导致布局错位怎么办_使用align-items:stretch解决高度差异
VS Code远程开发时如何处理文件权限问题
打开就能玩的植物大战僵尸 植物大战僵尸网页版传送门
Yandex官方入口网址 Yandex俄罗斯搜索引擎最新在线地址
Go调试环境为何无法启动_Go调试器启动失败原因与解决策略
Win11怎么开启卓越性能模式 Win11电源选项启用高性能释放硬件潜力【方法】
ACG动漫视频网入口 ACG动漫*免费正版观看地址
Yandex免登录官网入口_俄罗斯Yandex搜索引擎直达链接
Django表单验证失败时保留用户输入数据的最佳实践
c++如何实现一个简单的软件渲染器_c++从零开始的3D图形学
电脑IP地址怎么查 查看本机IP地址的几种方法
J*aScript中高效管理与清空动态列表:避免循环陷阱
如何仅使用CSS更改登录界面背景图像图标的颜色
mysql如何分析事务日志_mysql事务日志分析方法
虚幻5科幻题材ARPG大作遭取消!本是《奇异人生》厂商新作
12306几点到几点不能订票? | 官方最新系统维护时间全解析
C++ vector二维数组定义_C++ vector of vector用法
MinIO大规模对象列表性能瓶颈深度解析与外部元数据管理策略
Win11怎么查看电脑配置_Win11硬件配置检测工具使用
QQ邮箱网页版邮箱入口 QQ邮箱官方登录平台
谷歌邮箱网页版官方页面入口 谷歌邮箱网页端快速访问
必由学官方平台入口 必由学在线课堂登录地址
漫蛙2(台版)官方入口地址 漫蛙2(台版)正版漫画网页端
qq邮箱发邮件给国外发不出去_QQ邮箱国际邮件发送失败原因与解决
蛙漫安全无毒 官方认证的绿色入口
漫蛙2漫画入口 漫蛙正版网页漫画直达网址
Windows10怎么开启夜间模式 Windows10系统设置调整色温与亮度缓解夜间用眼疲劳【教程】
C++如何实现线程池_C++11手动实现一个简单的固定大小线程池
Vue.js 图片显示异常排查:理解应用挂载范围与DOM ID唯一性
想当下一个《2077》?《心之眼》Steam评价升至"多半好评"
小米14应用无法联网原因分析_小米14网络权限修复
我的世界mc.js免费游戏直接能玩 我的世界mc.js小游戏免费秒玩入口
我的世界官方游戏入口 我的世界官网平台直达链接
谷歌google账号怎么注册账号 谷歌账号注册官方流程
整合Supabase认证与Django模型:跨模式迁移的解决方案
如何在离线环境中使用Composer_Composer离线安装依赖包的技巧与策略
为什么我的微信朋友圈看不到别人的更新_微信朋友圈更新显示异常解决方法
UC浏览器如何安装插件 UC浏览器添加扩展程序详细教程【进阶】
2306选座时如何选靠窗位置_12306选座靠窗座位查看方法解析
微信怎么把收藏的内容分类管理 微信收藏内容标签分类方法