How to use cmp() in Python 3?

后端 未结 5 1492
甜味超标
甜味超标 2020-12-01 09:18

I cannot get the command cmp() to work.

Here is the code:

a = [1,2,3]
b = [1,2,3]
c = cmp(a,b)
print (c)

I am getting

5条回答
  •  情话喂你
    2020-12-01 09:34

    When the sign is needed, probably safest alternative is using math.copysign:

    import math
    ang = -2
    # alternative for cmp(ang, 0):
    math.copysign(1, ang)
    
    # Result: -1
    

    In particular if ang is of np.float64 type because of depreciation of the '-' operator. Example:

    import numpy as np
    
    def cmp_0(a, b):
        return (a > b) - (a < b)
    
    ang = np.float64(-2)
    cmp_0(ang, 0)
    
    # Result:
    # DeprecationWarning: numpy boolean subtract, the `-` operator, is deprecated, 
    # use the bitwise_xor, the `^` operator, or the logical_xor function instead.
    

    instead one could use:

    def cmp_0(a, b):
        return bool(a > b) - bool(a < b)
    
    ang = np.float64(-2)
    cmp(ang, 0)
    # Result: -1
    

提交回复
热议问题