Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

การเปรียบเทียบลิสต์ใน Python: ความแตกต่างระหว่าง Python 2 และ 3

หมายเหตุ: ฟังก์ชัน cmp() ถูกลบออกใน Python 3 แล้ว บทความนี้อธิบายพฤติกรรมใน Python 2 เพื่อความเข้าใจทางประวัติศาสตร์

ใน Python 2 เมธอด cmp() ใช้เปรียบเทียบสมาชิกของสองลิสต์ หากสมาชิกเป็นชนิดเดียวกัน จะเปรียบเทียบและคืนผลลัพธ์ หากเป็นชนิดต่างกัน จะตรวจสอบว่าทั้งคู่เป็นตัวเลขหรือไม่ หากเป็นตัวเลข จะทำ type coercion หากเป็นไปได้ก่อนเปรียบเทียบ หากมีเพียงด้านใดด้านหนึ่งเป็นตัวเลข ด้านนั้นจะถือว่า "น้อยกว่า" (ตัวเลขถือว่า "น้อยที่สุด") มิฉะนั้น จะเรียงตามชื่อชนิดข้อมูลตามลำดับอักษร

หากถึงท้ายของลิสต์ใดลิสต์หนึ่ง ลิสต์ที่ยาวกว่าจะถือว่า "มากกว่า" หากทั้งสองลิสต์หมดและมีข้อมูลเหมือนกัน ผลลัพธ์คือเสมอ (คืนค่า 0)

ตัวอย่าง (Python 2)

list1 = [123, 'xyz']
list2 = [456, 'abc']
print(cmp(list1, list2))
print(cmp(list2, list1))

list2 = [123, 'xyz']
print(cmp(list1, list2))

ผลลัพธ์

-1
1
0

ทางเลือกใน Python 3

ใน Python 3 สามารถเปรียบเทียบลิสต์โดยตรงด้วยออเปอเรเตอร์เปรียบเทียบ (<, >, ==, <=, >=, !=) ซึ่งใช้การเปรียบเทียบแบบ lexicographical (เปรียบเทียบทีละสมาชิกตามลำดับ)

list1 = [123, 'xyz']
list2 = [456, 'abc']
print(list1 < list2)   # True
print(list1 > list2)   # False
print(list1 == list2)  # False