python-cmp()的使用

本文详细介绍了Python中cmp()函数的使用方法及注意事项,包括不同数据类型间的比较规则,以及如何应用于列表比较等场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

注意:python3中已经删除了cmp()该函数。

cmp(x,y)    

比较x与y,当x>y时,返回1;  当x==y时,返回0;  当x<y时,返回-1;

 1 >>>cmp(1,0)
 2 1
 3 >>>cmp(1,1)
 4 0
 5 >>>cmp(1,2)
 6 -1
 7 >>>cmp('a','b')
 8 -1
 9 >>>cmp('abc','ab')
10 1
11 #因为'abc'的长度大于'ab',所以判定'abc'>'ab'

特殊的地方:

1.如果比较的类型不相同,但都是数字(整形和浮点类型),则进行强制的数字转换后再进行判断(对于哪个类型进行强制转换,这个有点疑问,但是觉得并不重要);

2.如果X为数字,Y非数字,则X<Y(数字是最小的);

>>> print True == 1
True
>>> print True == 0
False
>>> print False == 1
False
>>> print False == 0
True
#Bool类型中的True和False在计算机中也用1和0表示

 

3.当X、Y都不是数字且类型不同的时候,对其类型的名称(String,Bool...)进行判断;

>>> cmp(True,'True')
-1
>>> cmp(False,'True')
-1

 

以上是单纯的比较两个数据,下面是比较列表。

>>> list1 = [1,2,3]
>>> list2 = [1,2,3]
>>> cmp(list1,list2)
0
>>> list2[2] = 4
>>> cmp(list1,list2)
-1
>>> list1 = ['abc','a']
>>> list2 = ['abc',1]
>>> cmp(list1,list2)
1
>>> list2[1] = 'b'
>>> cmp(list1,list2)
-1
>>> list2[1] = True
>>> cmp(list1,list2)
1

 

转载于:https://www.cnblogs.com/UncleXiang/p/5193719.html

### Python 列表比较方法 在 Python 2.x 版本中,`cmp()` 是一种内置的方法,专门用于比较两个对象的大小。对于列表类型的比较,`cmp()` 函数会逐个对比列表中的元素,并根据第一个不相等的元素决定整个列表的相对顺序[^1]。 以下是 `cmp()` 的基本工作原理: - 当 `obj1` 小于 `obj2` 时,返回 `-1`; - 当两者相等时,返回 `0`; - 当 `obj1` 大于 `obj2` 时,返回 `1`[^2]。 #### 示例代码 下面是一个具体的例子展示如何使用 `cmp()` 对列表进行比较: ```python list1, list2 = [123, 'xyz'], [456, 'abc'] result1 = cmp(list1, list2) # 返回 -1,因为 123 < 456 result2 = cmp(list2, list1) # 返回 1,因为 456 > 123 list3 = list2 + [786] result3 = cmp(list2, list3) # 返回 -1,因为 list2 较短 print(result1, result2, result3) ``` 需要注意的是,在上述示例中,当一个列表长度较另一个更长时,较长的列表会被认为更大[^5]。 然而,自 Python 3 起,`cmp()` 已被移除,不再作为标准库的一部分提供支持[^4]。因此,如果需要实现类似的比较功能,可以通过其他方式完成,比如通过表达式 `(a > b) - (a < b)` 来模拟原生的 `cmp(a, b)` 行为。 #### 替代方案 为了适应现代 Python 开发环境(即 Python 3),可以定义自己的辅助函数来进行两者的比较操作: ```python def custom_cmp(x, y): """ 自定义 cmp 函数替代原有的 cmp() :param x: 第一个参数 :param y: 第二个参数 :return: 类似于原始 cmp() 的行为 (-1, 0 或者 1) """ return (x > y) - (x < y) # 使用实例 list_a = [1, 2, 3] list_b = [1, 2, 4] comparison_result_1 = custom_cmp(list_a, list_b) # 输出 -1 comparison_result_2 = custom_cmp(list_b, list_a) # 输出 1 comparison_result_3 = custom_cmp([1, 2], [1, 2]) # 输出 0 print(comparison_result_1, comparison_result_2, comparison_result_3) ``` 此方法能够有效解决因版本升级带来的兼容性问题,同时保持逻辑清晰易懂。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值