때로는 값과 위치 또는 인덱스 측면에서 두 파이썬 목록의 요소를 비교해야 할 수도 있습니다. 이 기사에서는 같은 위치에 있는 두 목록에서 값이 일치하지 않는 요소를 찾는 방법을 볼 것입니다.
for 루프 사용
유사한 인덱스의 값을 비교하도록 for 루프를 설계할 수 있습니다. 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]
열거 포함
목록 중 하나에 열거 기능을 적용할 때 각 요소와 인덱스를 통과하는 for 루프가 있다는 점을 제외하면 zip 기능의 접근 방식과 유사합니다.
예
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]