ฟังก์ชัน cmp()
cmp(x, y) เปรียบเทียบค่าของ 2 อาร์กิวเมนต์ x และ y
- คืนค่าติดลบ หาก x < y
- คืนค่า 0 หาก x == y
- คืนค่าบวก หาก x > y
Built-in cmp() มักคืน -1, 0, 1 เท่านั้น แต่ฟังก์ชันอื่นที่มี signature เดียวกันอาจคืนค่าอื่น ควรดูแค่เครื่องหมายของผลลัพธ์
>>> cmp(2, 8) # -1
>>> cmp(6, 6) # 0
>>> cmp(4, 1) # 1
>>> cmp('stackexchange', 'stackoverflow') # -1
เปรียบเทียบ List
เมธอด cmp() เปรียบเทียบสมาชิกของ 2 ลิสต์
cmp(list1, list2)
- ชนิดเดียวกัน: เปรียบเทียบตรงๆ
- ชนิดต่างกัน: ถ้าเป็นตัวเลข ทำ Numeric Coercion แล้วเปรียบเทียบ
- ถ้าตัวใดตัวหนึ่งเป็นตัวเลข อีกตัวถือว่า "ใหญ่กว่า" (ตัวเลขเป็น "เล็กที่สุด")
- มิฉะนั้น: เรียงตามชื่อชนิด (Alphabetically by name)
- ถึงปลายลิสต์ใดลิสต์หนึ่ง: ลิสต์ที่ยาวกว่า "ใหญ่กว่า" หากทั้งสองหมดและข้อมูลเหมือนกัน: คืน 0 (Tie)
ตัวอย่าง
list1, list2 = [456, 'xyz'], [789, 'abc'] print(cmp(list1, list2)) # -1 print(cmp(list2, list1)) # 1 list3 = list2 + [896] print(cmp(list2, list3)) # -1