当前位置:首页 » 编程语言 » python3cmp

python3cmp

发布时间: 2022-12-13 01:47:03

㈠ 关于python3没有cmp,如何代替的问题

>>>sorted(['bob','Bob','about','Zoo','Credit'],key=str.lower)
['about','bob','Bob','Credit','Zoo']

忽略大小写的比较,先转小写作为键值排序

㈡ 在Python 3 中的自定义排序怎么办

python3 sorted取消了对cmp的支持。
python3 帮助文档:
sorted(iterable, key=None, reverse=False)

  • reverse是一个布尔值。如果设置为True,列表元素将被倒序排列,默认为False

  • key接受一个函数,这个函数只接受一个元素,默认为None

  • Key的作用原理

    Python2中的自定义布尔函数cmp=custom_cmp(x, y)由Python3中的key=custom_key(x)代替。

    在python3中,待比较元素x通过custom_key函数转化为Python能比较的值custom_key(x),进而再基于返回值进行排序。

    例子1:

  • my_alphabet = ['a', 'b', 'c']def custom_key(word):

  • numbers = [] for letter in word:

  • numbers.append(my_alphabet.index(letter)) return numbers# python中的整数列表能够比较大小# custom_key('cbaba')==[2, 1, 0, 1, 0]x=['cbaba', 'ababa', 'bbaa']

  • x.sort(key=custom_key)123456789101112

  • 例子2

  • students = [('john', 'A', 15), ('jane', 'B', 12), ('dave','B', 10)]

  • sorted(students,key=lambda x: x[2]) #按照年龄来排序12

  • 关于lambda表达式

    例子3

    默认sorted([True, False])==[False, True] (False=0 < True=1)

    一个字符串排序,排序规则:小写<大写<奇数<偶数

  • #元组内(e1, e2, e3)的优先级排列为: e1 > e2 > e3sorted(s, key=lambda x: (x.isdigit(),x.isdigit() and int(x) % 2 == 0,x.isupper(),x)#input: 'asdf234GDSdsf23'#output: 'addffssDGS33224'12345

  • x.isdigit()的作用是把数字放在后边(True),字母放在前面(False).

  • x.isdigit() and int(x) % 2 == 0的作用是保证数字中奇数在前(False),偶数在后(True)。

  • x.isupper()的作用是在前面基础上,保证字母小写(False)在前大写在后(True).

  • 最后的x表示在前面基础上,对所有类别数字或字母排序。

㈢ Python3.x运用cmp()函数进行高级排序报错

numbers.sort这种用法是错误的,如果你想要排序,则用如下语句:
num_sort=sorted(numbers,key=None,reverse=False)
新的list
num_sort才是一个排序后的列表。然后,你自定义的cmp过程只能对比两个数字,而能对比列表中的各个元素,python3解释器不知道你要做什么,所以才会出错。

㈣ Python中字符和数字之间是怎么比较大小的

任何两个对象都可以比较
相同类型的对象(实例),如果是数字型(int/float/long/complex),则按照简单的大小来比较;如果是非数字型,且类(型)中定义了__cmp__(含__gt__,__lt__等)则按照__cmp__来比较,否则按照地址(id)来比较
不同类型的对象(实例),如果其中一个比较对象是数字型(int/float/long/complex等),则数字型的对象<其它非数字型的对象;如果两个都是非数字型的对象,则按照类型名的顺序比较,如{} < "abc"(按照"dict" < "str"),而"abc" > [1,2], "abc" < (1,2)。
对于自定义的类(型)实例,如果继承自基本类型,则按照基本类型的规则比较(1-3)。否则,old-style class < new-style class, new-style class之间按照类型名顺序比较,old-style class之间按照地址进行比较
bool类型是int的子类,且True=1, False=0,比较时按照1-4来比较,如True > -1, True < 4.2, True < "abc"等
上面的回答是针对Python2.x,3.x的有较大的变化,如str和int比较时会抛出异常等。

回到题目,字符和数字的比较符合规则3,所以数字<字符。举个例子,如100和'a'(ord('a')=97),有
100<'a'

㈤ Python3.x运用cmp()函数进行高级排序报错

numbers.sort这种用法是错误的,如果你想要排序,则用如下语句:
num_sort=sorted(numbers,key=None,reverse=False)
新的list num_sort才是一个排序后的列表。然后,你自定义的cmp过程只能对比两个数字,而能对比列表中的各个元素,python3解释器不知道你要做什么,所以才会出错。

㈥ Python 比较两个字典大小

学习 Python 时,遇到看到菜鸟教程里的 cmp() 方法,衍生出这篇文章。但是后来和朋友讨论,感觉在实际应用中极少有用到比较字典大小的场景。不过能搞懂一个知识点,还是很开心的。

cmp(dict1, dict2) 比较两个字典大小的方法:先比字典长度,若相等就比 key 值,若再相等就比 value。
但是这个方法已经被 Python 3 取消了。
请参考: Python2 用 cmp() 比较字典大小 , Python3 为什么取消了 __cmp__ 方法

operator 模块提供了一系列方法比较两个字典大小,详细方法及使用示例请参考: Python3 使用 operator 模块比较字典大小 。

但是在写法上我们要注意,最好用 String 内置的方法,这样利于对空值的判断:

结果如下:

㈦ 新手学习python3.2 有关cmp

The cmp() function should be treated as gone, and the __cmp__() special method is no longer supported. Use __lt__() for sorting, __eq__() with __hash__(), and other rich comparisons as needed. (If you really need the cmp() functionality, you could use the expression (a > b) - (a < b) as the equivalent for cmp(a, b).)

大意就是cmp()函数已经“离开”了,如果你真的需要cmp()函数,可以用表达式(a > b) - (a < b)代替cmp(a,b)。

㈧ python3 为什么取消了sort方法中的cmp参数

使用functools.cmp_to_key 即可。
附通过的代码:

class Solution:
# @param {integer[]} nums
# @return {string}
def largestNumber(self, nums):
from functools import cmp_to_key
key = cmp_to_key(lambda x,y: int(y+x)-int(x+y))
res = ''.join(sorted(map(str, nums), key=key)).lstrip('0')
return res or '0'

㈨ 如何把Python2的代码转换为Python3的代码

可以利用Python内置工具2to3.py,帮你自动将Python2的代码转换为Python3的代码的。这个脚本的位置位在Python安装的根目录\Python27\Tools\Scripts\2to3.py。
比如我手上有个Python 2.x的python脚本:D:\tmp\transform.py
可以通过打开命令提示符,定位至该要转换的脚本目录下,然后运行
2to3.py -w transform.py

如果上述不加-w参数,则默认只是把转换过程所对应的diff内容打印输出到当前窗口而已。加了-w,就是把改动内容,写回到原先的文件了。

㈩ python编程中cmp()函数是什么意思

cmp就是一个比较的方法,python3.x已经去掉了这个多余的东西

热点内容
欧文5的配置是什么 发布:2025-01-22 21:30:23 浏览:107
日志存储数据库 发布:2025-01-22 21:30:07 浏览:473
gulp上传cdn 发布:2025-01-22 21:27:34 浏览:202
emule文件夹 发布:2025-01-22 21:23:23 浏览:980
s7e什么时候推送安卓7 发布:2025-01-22 21:20:59 浏览:202
狐狸的清白脚本分析 发布:2025-01-22 21:19:59 浏览:181
如何破解仿射密码 发布:2025-01-22 21:13:53 浏览:80
百度视频存储 发布:2025-01-22 21:13:11 浏览:167
发吧传媒源码 发布:2025-01-22 21:07:52 浏览:952
shell脚本调用sql脚本 发布:2025-01-22 20:53:51 浏览:427