Hướng dẫn cmp in python - cmp trong trăn
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.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ủa hàm cmp() trong Python 2:cmp() trong Python 2: Tham số: x: Đây là một biểu thức số.: Đây là một biểu thức số. y: Đây cũng là một biểu thức số.: Đâ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. 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 3Hà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 Trong Python 3, tham số cmp(80, 100) : -1 cmp(180, 100) : 1 cmp(-80, 100) : -1 cmp(80, -100) : 1 09 đã được xóa và chỉ có thể sử dụng cmp(80, 100) : -1 cmp(180, 100) : 1 cmp(-80, 100) : -1 cmp(80, -100) : 1 16 (hoặc không có đối số nào).Không có người sửa lỗi cho sự thay đổi này. Tuy nhiên, việc phát hiện ra nó rất đơn giản: cuộc gọi cmp(80, 100) : -1 cmp(180, 100) : 1 cmp(-80, 100) : -1 cmp(80, -100) : 119 với đối số cmp(80, 100) : -1 cmp(180, 100) : 1 cmp(-80, 100) : -1 cmp(80, -100) : 109 làm tăng kiểu loại trong Python 3. Mỗi hàm CMP phải được thay thế bằng một hàm chính. Có hai cách để làm điều này:cmp() returns the sign of the difference of two numbers : -1 if x < y, 0 if x == y, or 1 if x > y. Nếu chức năng thực hiện một hoạt động chung trên cả hai đối số và sau đó so sánh kết quả, hãy thay thế nó chỉ bằng hoạt động chung. Nói cách khác, cmp(80, 100) : -1 cmp(180, 100) : 1 cmp(-80, 100) : -1 cmp(80, -100) : 1 21 nên được thay thế bằng cmp(80, 100) : -1 cmp(180, 100) : 1 cmp(-80, 100) : -1 cmp(80, -100) : 1 22Nếu ở trên không áp dụng, hãy bọc chức năng kiểu CMP với cmp(80, 100) : -1 cmp(180, 100) : 1 cmp(-80, 100) : -1 cmp(80, -100) : 123. Xem tài liệu của nó để biết chi tiết.cmp() method − cmp( x, y ) Hàm cmp(80, 100) : -1 cmp(180, 100) : 1 cmp(-80, 100) : -1 cmp(80, -100) : 1 24 không có sẵn trong Python 2.6, vì vậy nếu bạn cần hỗ trợ phiên bản đó, bạn sẽ cần sao chép nó từ các nguồn Python
Cú phápSau đây là cú pháp cho phương pháp cmp () - Thông sốx - Đây là một biểu thức số. #!/usr/bin/python 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) Y - đây cũng là một biểu thức số. cmp(80, 100) : -1 cmp(180, 100) : 1 cmp(-80, 100) : -1 cmp(80, -100) : 1 python_numbers.htm Cải thiện bài viết Lưu bài viết Phương thức CMP () trong Python 2.x so sánh hai số nguyên và trả về -1, 0, 1 theo so sánh.cmp () không hoạt động trong Python 3.x. Bạn có thể muốn xem danh sách so sánh trong Python. Syntax: cmp(a, b) Parameters: a and b are the two numbers in which the comparison is being done. Returns: -1 if ab cmp(80, 100) : -1 cmp(180, 100) : 1 cmp(-80, 100) : -1 cmp(80, -100) : 18 cmp(80, 100) : -1 cmp(180, 100) : 1 cmp(-80, 100) : -1 cmp(80, -100) : 19 ________ 20 & nbsp; 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))1 cmp(80, 100) : -1 cmp(180, 100) : 1 cmp(-80, 100) : -1 cmp(80, -100) : 19 ________ 23 & nbsp; 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))4 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))5 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))6 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))7 cmp(80, 100) : -1 cmp(180, 100) : 1 cmp(-80, 100) : -1 cmp(80, -100) : 18 cmp(80, 100) : -1 cmp(180, 100) : 1 cmp(-80, 100) : -1 cmp(80, -100) : 19 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))3 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))1 cmp(80, 100) : -1 cmp(180, 100) : 1 cmp(-80, 100) : -1 cmp(80, -100) : 19 ________ 23 & nbsp; 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))4 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))5 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))6 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))7 cmp(80, 100) : -1 cmp(180, 100) : 1 cmp(-80, 100) : -1 cmp(80, -100) : 18 cmp(80, 100) : -1 cmp(180, 100) : 1 cmp(-80, 100) : -1 cmp(80, -100) : 19 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))3 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))1 cmp(80, 100) : -1 cmp(180, 100) : 1 cmp(-80, 100) : -1 cmp(80, -100) : 19 ________ 23 & nbsp; 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))4 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))5 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))6 cmp( x, y )7 Output: -1 0 1
cmp(80, 100) : -1 cmp(180, 100) : 1 cmp(-80, 100) : -1 cmp(80, -100) : 18 cmp(80, 100) : -1 cmp(180, 100) : 1 cmp(-80, 100) : -1 cmp(80, -100) : 19 cmp( x, y )0 Ứng dụng thực tế: Chương trình kiểm tra xem một số chẵn hoặc lẻ bằng hàm CMP. Cách tiếp cận: So sánh 0 và n%2, nếu nó trả về 0, thì nó thậm chí là, nó là lẻ của nó. Dưới đây là triển khai Python của chương trình trên: #!/usr/bin/python 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)9 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))4 cmp(80, 100) : -1 cmp(180, 100) : 1 cmp(-80, 100) : -1 cmp(80, -100) : 11 cmp(80, 100) : -1 cmp(180, 100) : 1 cmp(-80, 100) : -1 cmp(80, -100) : 12 cmp(80, 100) : -1 cmp(180, 100) : 1 cmp(-80, 100) : -1 cmp(80, -100) : 13 #!/usr/bin/python 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)9 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))4 cmp(80, 100) : -1 cmp(180, 100) : 1 cmp(-80, 100) : -1 cmp(80, -100) : 16 cmp( x, y )8 cmp(80, 100) : -1 cmp(180, 100) : 1 cmp(-80, 100) : -1 cmp(80, -100) : 19 ________ 50 & nbsp; Dưới đây là triển khai Python của chương trình trên: #!/usr/bin/python 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)9 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))4 cmp(80, 100) : -1 cmp(180, 100) : 1 cmp(-80, 100) : -1 cmp(80, -100) : 11 cmp(80, 100) : -1 cmp(180, 100) : 1 cmp(-80, 100) : -1 cmp(80, -100) : 12 cmp(80, 100) : -1 cmp(180, 100) : 1 cmp(-80, 100) : -1 cmp(80, -100) : 13 cmp( x, y )8 cmp(80, 100) : -1 cmp(180, 100) : 1 cmp(-80, 100) : -1 cmp(80, -100) : 19 ________ 50 & nbsp; Output: even odd Python 3 là nghiêm ngặt khi so sánh các đối tượng của các loại khác nhau. Nó cũng giảm so sánh dựa trên CMP và phân loại có lợi cho các so sánh phong phú và phân loại chính, các lựa chọn thay thế hiện đại đã có sẵn ít nhất kể từ Python 2.4. Chi tiết và chiến lược chuyển tiếp theo. Cách tiếp cận nghiêm ngặt để so sánh trong Python 3 khiến thường không thể so sánh các loại đối tượng khác nhau. Ví dụ, trong Python 2, so sánh các tác phẩm Nhưng trong Python 3, nó thất bại với một thông báo lỗi được mô tả tốt: cmp(80, 100) : -1 cmp(180, 100) : 1 cmp(-80, 100) : -1 cmp(80, -100) : 10 Sự thay đổi thường thể hiện trong danh sách sắp xếp: trong Python 3, danh sách với các mục thuộc loại khác nhau thường không thể sắp xếp. Nếu bạn cần sắp xếp các danh sách không đồng nhất hoặc so sánh các loại đối tượng khác nhau, hãy thực hiện một chức năng chính để mô tả đầy đủ cách các loại khác nhau nên được đặt hàng. So sánh phong phú
Phương pháp đặc biệt -1 0 18 không còn được tôn vinh trong Python 3. Trong Python 2, -1 0 19 đã thực hiện so sánh giữa hai đối tượng, trả về giá trị âm nếu even odd0, dương nếu even odd1 và không nếu chúng bằng nhau. Cách tiếp cận này thể hiện kết quả so sánh là phổ biến trong các ngôn ngữ kiểu C. Nhưng, sớm trong sự phát triển của Python 2, rõ ràng là chỉ cho phép ba trường hợp cho thứ tự tương đối của các đối tượng là quá hạn chế. Điều này dẫn đến việc giới thiệu các phương pháp so sánh phong phú, gán một phương pháp đặc biệt cho mỗi toán tử:
Mỗi đối số lấy hai đối số giống như CMP và phải trả về giá trị kết quả (thường là boolean), tăng một ngoại lệ hoặc trả về even odd8 để báo hiệu hoạt động không được xác định. Trong Python 3, kiểu so sánh CMP đã bị loại bỏ. Tất cả các đối tượng được triển khai even odd9 phải được cập nhật để thực hiện tất cả các phương thức phong phú thay thế. . Để tránh rắc rối trong việc cung cấp tất cả sáu chức năng, bạn có thể thực hiện even odd2, even odd3 và chỉ một trong các nhà khai thác đặt hàng và sử dụng trình trang trí cmp(80, 100) : -1 cmp(180, 100) : 1 cmp(-80, 100) : -1 cmp(80, -100) : 104 để điền vào phần còn lại. Lưu ý rằng người trang trí không có sẵn trong Python 2.6. Nếu bạn cần hỗ trợ phiên bản đó, bạn sẽ cần cung cấp tất cả sáu phương pháp. Bộ trang trí cmp(80, 100) : -1 cmp(180, 100) : 1 cmp(-80, 100) : -1 cmp(80, -100) : 105 đi kèm với chi phí thực hiện chậm hơn và dấu vết ngăn xếp phức tạp hơn cho các phương pháp so sánh dẫn xuất, do đó, việc xác định tất cả sáu có thể cần thiết rõ ràng trong một số trường hợp ngay cả khi hỗ trợ Python 2.6 bị giảm. Ví dụ, giả sử rằng bạn có một lớp để đại diện cho một người có -1 0 18 được triển khai: cmp(80, 100) : -1 cmp(180, 100) : 1 cmp(-80, 100) : -1 cmp(80, -100) : 11 Với cmp(80, 100) : -1 cmp(180, 100) : 1 cmp(-80, 100) : -1 cmp(80, -100) : 107, lớp sẽ trở thành: cmp(80, 100) : -1 cmp(180, 100) : 1 cmp(-80, 100) : -1 cmp(80, -100) : 12 Nếu cmp(80, 100) : -1 cmp(180, 100) : 1 cmp(-80, 100) : -1 cmp(80, -100) : 107 không thể được sử dụng hoặc nếu hiệu quả là quan trọng, tất cả các phương pháp có thể được đưa ra rõ ràng: cmp(80, 100) : -1 cmp(180, 100) : 1 cmp(-80, 100) : -1 cmp(80, -100) : 13 Hàm cmp(80, 100) : -1 cmp(180, 100) : 1 cmp(-80, 100) : -1 cmp(80, -100) : 1 09
Phương pháp đặc biệt -1 0 18 không còn được tôn vinh trong Python 3. Trong Python 2, -1 0 19 đã thực hiện so sánh giữa hai đối tượng, trả về giá trị âm nếu even odd0, dương nếu even odd1 và không nếu chúng bằng nhau. cmp(80, 100) : -1 cmp(180, 100) : 1 cmp(-80, 100) : -1 cmp(80, -100) : 14 Cách tiếp cận này thể hiện kết quả so sánh là phổ biến trong các ngôn ngữ kiểu C. Nhưng, sớm trong sự phát triển của Python 2, rõ ràng là chỉ cho phép ba trường hợp cho thứ tự tương đối của các đối tượng là quá hạn chế. Điều này dẫn đến việc giới thiệu các phương pháp so sánh phong phú, gán một phương pháp đặc biệt cho mỗi toán tử:
Phương pháp đặc biệt -1 0 18 không còn được tôn vinh trong Python 3. Trong Python 2, -1 0 19 đã thực hiện so sánh giữa hai đối tượng, trả về giá trị âm nếu even odd0, dương nếu even odd1 và không nếu chúng bằng nhau. cmp(80, 100) : -1 cmp(180, 100) : 1 cmp(-80, 100) : -1 cmp(80, -100) : 15 Cách tiếp cận này thể hiện kết quả so sánh là phổ biến trong các ngôn ngữ kiểu C. Nhưng, sớm trong sự phát triển của Python 2, rõ ràng là chỉ cho phép ba trường hợp cho thứ tự tương đối của các đối tượng là quá hạn chế. cmp(80, 100) : -1 cmp(180, 100) : 1 cmp(-80, 100) : -1 cmp(80, -100) : 16 Điều này dẫn đến việc giới thiệu các phương pháp so sánh phong phú, gán một phương pháp đặc biệt cho mỗi toán tử: Nhà điều hành cmp(80, 100) : -1 cmp(180, 100) : 1 cmp(-80, 100) : -1 cmp(80, -100) : 17 Phương pháp Trong Python 3, tham số cmp(80, 100) : -1 cmp(180, 100) : 1 cmp(-80, 100) : -1 cmp(80, -100) : 109 đã được xóa và chỉ có thể sử dụng cmp(80, 100) : -1 cmp(180, 100) : 1 cmp(-80, 100) : -1 cmp(80, -100) : 116 (hoặc không có đối số nào). Không có người sửa lỗi cho sự thay đổi này.Tuy nhiên, việc phát hiện ra nó rất đơn giản: cuộc gọi cmp(80, 100) : -1 cmp(180, 100) : 1 cmp(-80, 100) : -1 cmp(80, -100) : 119 với đối số cmp(80, 100) : -1 cmp(180, 100) : 1 cmp(-80, 100) : -1 cmp(80, -100) : 109 làm tăng kiểu loại trong Python 3. Mỗi hàm CMP phải được thay thế bằng một hàm chính.Có hai cách để làm điều này:
|