บางครั้งเราอาจจำเป็นต้องเปรียบเทียบองค์ประกอบในรายการหลามสองรายการในแง่ของทั้งค่าและตำแหน่งหรือดัชนี ในบทความนี้ เราจะมาดูวิธีค้นหาองค์ประกอบในสองรายการที่ตำแหน่งเดียวกันซึ่งไม่ตรงกับค่าขององค์ประกอบ
ใช้สำหรับวนซ้ำ
เราสามารถออกแบบลูปเพื่อเปรียบเทียบค่าที่ดัชนีที่คล้ายกัน ID ค่าไม่ตรงกัน จากนั้นเราจะเพิ่มดัชนีในรายการผลลัพธ์ ลูป for จะดึงค่าในดัชนีแรกก่อน จากนั้นจึงใช้เงื่อนไข if เพื่อเปรียบเทียบกับค่าจากรายการที่สอง
ตัวอย่าง
listA= [13, 'Mon',23, 62,'Sun']
listB = [5, 'Mon',23, 6,'Sun']
# index variable
idx = 0
# Result list
res = []
# With iteration
for i in listA:
if i != listB[idx]:
res.append(idx)
idx = idx + 1
# Result
print("The index positions with mismatched values:\n",res) ผลลัพธ์
การเรียกใช้โค้ดข้างต้นทำให้เราได้ผลลัพธ์ดังต่อไปนี้ -
The index positions with mismatched values: [0, 3]
มีซิป
ฟังก์ชัน zip ช่วยให้เราเขียนโค้ดที่สั้นลงเมื่อเราเปรียบเทียบองค์ประกอบจากแต่ละดัชนี ค่าดัชนีจะถูกบันทึกสำหรับตำแหน่งที่ค่าขององค์ประกอบไม่ตรงกัน
ตัวอย่าง
listA= [13, 'Mon',23, 62,'Sun']
listB = [5, 'Mon',23, 6,'Sun']
res = [listB.index(n) for m, n in
zip(listA, listB) if n != m]
# Result
print("The index positions with mismatched values:\n",res) ผลลัพธ์
การเรียกใช้โค้ดข้างต้นทำให้เราได้ผลลัพธ์ดังต่อไปนี้ -
The index positions with mismatched values: [0, 3]
พร้อมแจงนับ
คล้ายกับวิธีการในฟังก์ชัน zip ยกเว้นว่าที่นี่เรามีการวนซ้ำเพื่อผ่านแต่ละองค์ประกอบและดัชนีเมื่อใช้ฟังก์ชัน enumerate กับรายการใดรายการหนึ่ง
ตัวอย่าง
listA= [13, 'Mon',23, 62,'Sun']
listB = [5, 'Mon',23, 6,'Sun']
res = [idx for idx, elem in enumerate(listB)
if elem != listA[idx]]
# Result
print("The index positions with mismatched values:\n",res) ผลลัพธ์
การเรียกใช้โค้ดข้างต้นทำให้เราได้ผลลัพธ์ดังต่อไปนี้ -
The index positions with mismatched values: [0, 3]