บางครั้งเราอาจจำเป็นต้องเปรียบเทียบองค์ประกอบในรายการหลามสองรายการในแง่ของทั้งค่าและตำแหน่งหรือดัชนี ในบทความนี้ เราจะมาดูวิธีค้นหาองค์ประกอบในสองรายการที่ตำแหน่งเดียวกันซึ่งไม่ตรงกับค่าขององค์ประกอบ
ใช้สำหรับวนซ้ำ
เราสามารถออกแบบลูปเพื่อเปรียบเทียบค่าที่ดัชนีที่คล้ายกัน 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]