Hướng dẫn dùng python cmp python



Hàm cmp() trong Python 2 trả về dấu hiệu chỉ sự khác nhau giữa hai số: -1 nếu x < y, 0 nếu x == y, hoặc 1 nếu x > y.

Lưu ý: Hàm cmp() chỉ có trong Python 2, nó đã bị loại bỏ trong Python 3.


Cú pháp

Cú pháp của hàm cmp() trong Python 2:

Tham số:

  • x: Đây là một biểu thức số.

  • y: Đây cũng là một biểu thức số.


Ví dụ sau minh họa cách sử dụng của hàm cmp() trong Python 2.

print "cmp(80, 100) : ", cmp(80, 100)
print "cmp(180, 100) : ", cmp(180, 100)
print "cmp(-80, 100) : ", cmp(-80, 100)
print "cmp(80, -100) : ", cmp(80, -100)

Chạy chương trình Python 2 trên sẽ cho kết quả:

cmp(80, 100) :  -1
cmp(180, 100) :  1
cmp(-80, 100) :  -1
cmp(80, -100) :  1


Ví dụ hàm cmp() trong Python 3

Hàm cmp() đã bị loại bỏ trong Python 3, vậy biểu thức này (a > b) - (a < b)

a = 100
b = 100
print ("cmp(80, 100) : ", (a > b) - (a < b))
a = 80
b = 100
print ("cmp(80, 100) : ", (a > b) - (a < b))
a = -80
b = -100
print ("cmp(80, 100) : ", (a > b) - (a < b))

Chạy chương trình Python 2 trên sẽ cho kết quả:

cmp(80, 100) :  0
cmp(80, 100) :  -1
cmp(80, 100) :  1



answer

63

Hướng dẫn dùng python cmp python

Như đã đề cập trong các nhận xét, cmpkhông tồn tại trong Python 3. Nếu bạn thực sự muốn nó, bạn có thể tự xác định nó:

def cmp(a, b):
    return (a > b) - (a < b) 

được lấy từ Bản gốc có gì mới trong Python 3.0 . Tuy nhiên, nó khá hiếm - mặc dù không phải là chưa từng nghe - nhưng nó thực sự cần thiết, vì vậy bạn có thể muốn nghĩ xem đó có thực sự là cách tốt nhất để làm bất cứ điều gì bạn muốn hay không.

63 hữu ích 1 bình luận chia sẻ

answer

9

Hướng dẫn dùng python cmp python

Trong Python 3.x bạn có thể import operatorvà điều hành sử dụng mô-đun của eq(), lt(), vv ... thay vìcmp()

9 hữu ích 0 bình luận chia sẻ

answer

1

Hướng dẫn dùng python cmp python

Khi cần ký hiệu, có lẽ cách thay thế an toàn nhất là sử dụng math.copysign:

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

# Result: -1

Đặc biệt nếu ang thuộc loại np.float64 vì toán tử '-' bị khấu hao. Thí dụ:

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.

thay vào đó người ta có thể sử dụng:

def cmp_0(a, b):
    return bool(a > b) - bool(a < b)

ang = np.float64(-2)
cmp(ang, 0)
# Result: -1

1 hữu ích 0 bình luận chia sẻ

answer

0

Hướng dẫn dùng python cmp python

Nếu a hoặc b là một đối tượng lớp, thì các câu trả lời trên sẽ có lỗi biên dịch như sau: Ví dụ: a là Class Clock: File "01_ClockClass_lab16.py", dòng 14, trong cmp return (a> b) - (a ' không được hỗ trợ giữa các trường hợp của 'Đồng hồ' và 'Đồng hồ'

Thay đổi kiểu với int () để loại bỏ lỗi:

def cmp (a, b): return (int (a)> int (b)) - (int (a)

0 hữu ích 1 bình luận chia sẻ

answer

0

Hướng dẫn dùng python cmp python

thêm vào câu trả lời của @ maxin, trong python 3.x, nếu bạn muốn so sánh hai danh sách các bộ giá trị ab

import operator

a = [(1,2),(3,4)]
b = [(3,4),(1,2)]
# convert both lists to sets before calling the eq function
print(operator.eq(set(a),set(b))) #True

0 hữu ích 0 bình luận chia sẻ

answer

0

Hướng dẫn dùng python cmp python

cmp()Hàm này chỉ hoạt động trên phiên bản Python 2.x, nếu bạn cố gắng sử dụng nó trong phiên bản 3.x, nó sẽ báo lỗi:

NameError: name 'cmp' is not defined
[Finished in 0.1s with exit code 1]

Xem đoạn mã dưới đây:

a=60
b=90
print(cmp(a,b))

đầu ra:

-1

Trong khi so sánh các số nguyên cmp () chỉ thực hiện phép trừ đối số của nó tức là trong trường hợp này là ab, nếu phép trừ là -ve thì nó trả về -1 tức là a b

a=90
b=60
print(cmp(a,b))

đầu ra:

1

Lần nữa:

a="abc"
b="abc"
print(cmp(a,b))

đầu ra:

0

khi cả hai đối số đều bằng nhau, tức là a = b, nó trả về 0 dưới dạng đầu ra. Ở đây, chúng tôi đã chuyển hai kiểu chuỗi giá trị. Ở đây, cmp () so sánh cả chuỗi ký tự theo ký tự và nếu được tìm thấy giống nhau thì trả về 0.

0 hữu ích 0 bình luận chia sẻ

answer

0

Hướng dẫn dùng python cmp python

Trong trường hợp chung, đây là tất cả các sự thay thế tốt cmp(), đối với trường hợp sử dụng thực tế mà người đăng ban đầu đưa ra, chắc chắn

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

hoặc chỉ

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

sẽ hoạt động khá tốt.

0 hữu ích 0 bình luận chia sẻ