So sánh hai list theo cả giá trị và vị trí (chỉ mục), tìm các chỉ mục mà giá trị không khớp.
Cách 1: Vòng lặp for
Duyệt listA với biến chỉ mục idx, so sánh với listB[idx].
listA = [13, 'Mon', 23, 62, 'Sun']
listB = [5, 'Mon', 23, 6, 'Sun']
res = []
for idx, val in enumerate(listA):
if val != listB[idx]:
res.append(idx)
print("Chỉ mục không khớp:", res) # [0, 3]
Cách 2: Sử dụng zip()
Dùng zip(listA, listB) để lấy cặp giá trị, lọc cặp không bằng nhau, lấy chỉ mục từ listB.index().
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]
print("Chỉ mục không khớp:", res) # [0, 3]
Cách 3: Sử dụng enumerate()
Duyệt enumerate(listB), so sánh với listA[idx].
listA = [13, 'Mon', 23, 62, 'Sun']
listB = [5, 'Mon', 23, 6, 'Sun']
res = [idx for idx, elem in enumerate(listB) if elem != listA[idx]]
print("Chỉ mục không khớp:", res) # [0, 3]