Computer >> Máy Tính >  >> Lập trình >> Python

Tìm mục không khớp trên cùng một chỉ mục trong hai danh sách bằng Python

Đôi khi chúng ta có thể cần so sánh các phần tử trong hai danh sách python về cả giá trị và vị trí hoặc chỉ mục của chúng. Trong bài viết này, chúng ta sẽ xem cách tìm ra các phần tử trong hai danh sách ở cùng một vị trí không khớp về giá trị của chúng.

Sử dụng vòng lặp for

chúng ta có thể thiết kế vòng lặp for để so sánh các giá trị tại các chỉ mục tương tự. Id các giá trị không khớp sau đó chúng tôi thêm chỉ mục vào danh sách kết quả. Đầu tiên, vòng lặp for tìm nạp giá trị trong chỉ mục đầu tiên và sau đó sử dụng điều kiện if để so sánh nó với các giá trị từ danh sách thứ hai.

Ví dụ

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)

Đầu ra

Chạy đoạn mã trên cho chúng ta kết quả sau -

The index positions with mismatched values:
[0, 3]

Với zip

Hàm zip giúp chúng tôi viết mã ngắn hơn khi chúng tôi so sánh các phần tử từ mỗi chỉ mục. Các giá trị chỉ mục được ghi lại cho các vị trí mà giá trị của phần tử không khớp.

Ví dụ

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)

Đầu ra

Chạy đoạn mã trên cho chúng ta kết quả sau -

The index positions with mismatched values:
[0, 3]

Với liệt kê

Nó tương tự như cách tiếp cận trong hàm zip ngoại trừ ở đây chúng ta có vòng lặp for để đi qua từng phần tử và chỉ mục khi áp dụng hàm liệt kê cho một trong danh sách.

Ví dụ

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)

Đầu ra

Chạy đoạn mã trên cho chúng ta kết quả sau -

The index positions with mismatched values:
[0, 3]