如何在Python 3中使用cmp()?

Ben*_*ire 19 python python-3.x

我无法让命令cmp()工作.

这是代码:

a = [1,2,3]
b = [1,2,3]
c = cmp(a,b)
print (c)
Run Code Online (Sandbox Code Playgroud)

我收到错误:

Traceback (most recent call last):
  File "G:\Dropbox\Code\a = [1,2,3]", line 3, in <module>
    c = cmp(a,b)
 NameError: name 'cmp' is not defined
[Finished in 0.1s]
Run Code Online (Sandbox Code Playgroud)

DSM*_*DSM 36

正如评论中所提到的,cmpPython 3中不存在.如果你真的想要它,你可以自己定义它:

def cmp(a, b):
    return (a > b) - (a < b) 
Run Code Online (Sandbox Code Playgroud)

这是从最初的Python 3.0新功能中获取的.虽然并非闻所未闻,但它确实非常罕见,所以你可能想要考虑它是否真的是你做任何事情的最佳方式.

  • 可能需要像这样转换布尔值: def cmp(a, b): return int(a &gt; b) - int(a &lt; b) (2认同)
  • 根据 @Oren 的评论,如果 a 和 b 是 numpy 变量,则 `(a &gt; b)` 和 `(a &lt;b)` 变量可能是 numpy.bool_ 类型。numpy.bool_ 类型不支持减法。使用“bool(a &gt; b) - bool(a &lt; b)”解决了这个问题。 (2认同)

小智 10

在Python 3.x,然后才能import operator和使用操作模块eq()lt()等...而不是cmp()