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

ค้นหารายการที่ไม่ตรงกันในดัชนีเดียวกันในสองรายการใน Python


บางครั้งเราอาจจำเป็นต้องเปรียบเทียบองค์ประกอบในรายการหลามสองรายการในแง่ของทั้งค่าและตำแหน่งหรือดัชนี ในบทความนี้ เราจะมาดูวิธีค้นหาองค์ประกอบในสองรายการที่ตำแหน่งเดียวกันซึ่งไม่ตรงกับค่าขององค์ประกอบ

ใช้สำหรับวนซ้ำ

เราสามารถออกแบบลูปเพื่อเปรียบเทียบค่าที่ดัชนีที่คล้ายกัน 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]