python3cmp函数 python3open函数

python3.5中cmp怎么用

python 3.4.3 的版本中已经没有cmp函数,被operator模块代替,在交互模式下使用时,需要导入模块。

成都创新互联公司从2013年成立,是专业互联网技术服务公司,拥有项目成都网站设计、做网站网站策划,项目实施与项目整合能力。我们以让每一个梦想脱颖而出为使命,1280元红安做网站,已为上家服务,为红安各地企业和个人服务,联系电话:028-86922220

在没有导入模块情况下,会出现:

相关推荐:《Python视频教程》

看下面给的内置函数:

这几个函数就是用来替换之前的cmp的,之前使用cmp的同胞们,咱们以后就换上面这些函数咯。

先简单说下这几个函数的意思吧。

lt(a,b) 相当于 ab 从第一个数字或字母(ASCII)比大小

le(a,b) 相当于a=b

eq(a,b) 相当于a==b 字母完全一样,返回True

ne(a,b) 相当于a!=b

gt(a,b) 相当于ab

ge(a,b) 相当于 a=b

函数的返回值是布尔类型。

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

Python3自带了解决方案,在functools包中有一个把按cmp方式的写的函数转换成key方式函数的函数,用法如下

from functools import cmp_to_key

print(sorted(['bob','Bob','about','Zoo','Credit'], key=cmp_to_key(cmp_ignore_case)))

对你这个排序需求实际上用key方式完全可以达到求。

比如要先按每个单词的第2个字母排序再按第3个字母排序。

from operator import itemgetter

sorted(['bob','Bob','about','Zoo','Credit'], key=itemgetter(1,2))

['about', 'bob', 'Bob', 'Zoo', 'Credit']

python3.2.2版本中的cmp()函数

3开始没这个函数了,官方文档是这么写的

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.x运用cmp()函数进行高级排序报错

numbers.sort这种用法是错误的,如果你想要排序,则用如下语句:

num_sort=sorted(numbers,key=None,reverse=False)

新的list

num_sort才是一个排序后的列表。然后,你自定义的cmp过程只能对比两个数字,而能对比列表中的各个元素,python3解释器不知道你要做什么,所以才会出错。


当前标题:python3cmp函数 python3open函数
文章转载:http://azwzsj.com/article/dosehog.html