List ใน Python เป็นการรวบรวมข้อมูลที่คล้ายกัน เราอาจต้องการเปรียบเทียบข้อมูลในสอง List เพื่อดำเนินการบางอย่าง เราจะพูดถึงวิธีการต่างๆ ในการเปรียบเทียบสอง List ใน Python
การใช้ list.sort() และตัวดำเนินการ ==
เมธอด list.sort() จะจัดเรียงสอง List และตัวดำเนินการ == จะเปรียบเทียบสอง List รายการต่อรายการ ซึ่งหมายถึงทั้งสอง List มีค่าข้อมูลเท่ากันในตำแหน่งเดียวกัน วิธีนี้ตรวจสอบว่า List มีค่าข้อมูลเท่ากัน แต่ไม่ได้คำนึงถึงลำดับของสมาชิกใน List นั่นหมายความว่า List [1,2,3] จะเท่ากับ List [2,1,3] ตามวิธีการเปรียบเทียบนี้
ตัวอย่าง
def compareList(l1, l2):
l1.sort()
l2.sort()
if l1 == l2:
return "Equal"
else:
return "Non equal"
l1 = [1, 2, 3]
l2 = [2, 1, 3]
print("First comparison", compareList(l1, l2))
l3 = [1, 2, 3]
l4 = [1, 2, 4]
print("Second comparison", compareList(l3, l4))
ผลลัพธ์
First comparison Equal
Second comparison Non equal
การใช้ collections.Counter()
วิธีนี้ทดสอบความเท่ากันของ List โดยเปรียบเทียบความถี่ (frequency) ของแต่ละสมาชิกใน List แรกกับ List ที่สอง วิธีนี้ก็ไม่ได้คำนึงถึงลำดับของสมาชิกใน List เช่นกัน
ตัวอย่าง
import collections
def compareList(l1, l2):
if collections.Counter(l1) == collections.Counter(l2):
return "Equal"
else:
return "Non equal"
l1 = [1, 2, 3]
l2 = [2, 1, 3]
print("First comparison", compareList(l1, l2))
l3 = [1, 2, 3]
l4 = [1, 2, 4]
print("Second comparison", compareList(l3, l4))
ผลลัพธ์
First comparison Non equal
Second comparison Equal
การใช้ sum(), zip() และ len()
วิธีนี้จะเปรียบเทียบสมาชิกแต่ละตัวของสอง List และเก็บผลลัพธ์เป็นผลรวมของ 1 ซึ่งจะนำไปเปรียบเทียบกับความยาวของอีก List หนึ่ง สำหรับวิธีนี้ เราต้องตรวจสอบก่อนว่าความยาวของทั้งสอง List เท่ากันหรือไม่
วิธีนี้ตรวจสอบลำดับของสมาชิกด้วย หมายความว่า List [1,2,3] จะไม่เท่ากับ List [2,1,3]
ตัวอย่าง
def compareList(l1, l2):
if len(l1) == len(l2) and len(l1) == sum([1 for i, j in zip(l1, l2) if i == j]):
return "Equal"
else:
return "Non equal"
l1 = [1, 2, 3]
l2 = [2, 1, 3]
print("First comparison", compareList(l1, l2))
l3 = [1, 2, 3]
l4 = [1, 2, 3]
print("Second comparison", compareList(l3, l4))
ผลลัพธ์
First comparison Non equal
Second comparison Equal
จากตัวอย่างข้างต้น สำหรับการเปรียบเทียบครั้งแรก ข้อมูลในทั้งสอง List เท่ากันแต่ลำดับต่างกัน ดังนั้นการเปรียบเทียบครั้งแรกจึงคืนค่า "Non equal"
การใช้ตัวดำเนินการ == โดยตรง
นี่เป็นการปรับเปลี่ยนจากวิธีแรก ในวิธีนี้ List จะถูกเปรียบเทียบโดยไม่จัดเรียง (sort) ดังนั้นวิธีนี้จึงคำนึงถึงลำดับของข้อมูลใน List
ตัวอย่าง
def compareList(l1, l2):
if l1 == l2:
return "Equal"
else:
return "Non equal"
l1 = [1, 2, 3]
l2 = [2, 1, 3]
print("First comparison", compareList(l1, l2))
l3 = [1, 2, 3]
l4 = [1, 2, 3]
print("Second comparison", compareList(l3, l4))
ผลลัพธ์
First comparison Non equal
Second comparison Equal
นี่คือวิธีการบางส่วนในการเปรียบเทียบ List ใน Python ทั้งที่คำนึงถึงลำดับข้อมูลและไม่คำนึงถึงลำดับข้อมูล