Lưu ý quan trọng: Hàm cmp() chỉ tồn tại trong Python 2. Từ Python 3, hàm này đã bị loại bỏ. Bài viết này giữ lại để tham khảo lịch sử.
Trong Python 2, cmp(list1, list2) so sánh từng phần tử theo thứ tự:
- Nếu cùng kiểu, so sánh trực tiếp.
- Nếu khác kiểu nhưng đều là số, ép kiểu rồi so sánh.
- Nếu một bên là số, bên kia không phải số → số được coi "nhỏ hơn".
- Nếu không phải số, so sánh theo tên kiểu theo thứ tự bảng chữ cái.
- Kết thúc một list: list dài hơn được coi "lớn hơn".
- Cả hai hết và giống hệt nhau → trả về 0 (bằng nhau).
Ví dụ (Python 2)
list1 = [123, 'xyz'] list2 = [456, 'abc'] print(cmp(list1, list2)) # -1 print(cmp(list2, list1)) # 1 list2 = [123, 'xyz'] print(cmp(list1, list2)) # 0
Kết quả
-1 1 0
Tương đương trong Python 3
Python 3 dùng toán tử so sánh trực tiếp (==, !=, <, >, <=, >=) cho list, tuân theo quy tắc lexicographical (từ điển). Hoặc dùng (a > b) - (a < b) để mô phỏng cmp.