Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

특정 인덱스 위치의 요소가 일치하는 행을 반환하는 파이썬 프로그램

중첩 리스트(리스트 안의 리스트)를 다루다 보면, 특정 인덱스 위치의 요소가 조건과 일치하는 행만 골라내야 하는 경우가 자주 있습니다. 이럴 때는 복잡한 외부 라이브러리 없이 간단한 for 반복문과 append() 함수만으로도 손쉽게 해결할 수 있습니다.

예제 코드

다음은 두 개의 중첩 리스트를 비교하여, 지정된 인덱스 위치의 요소가 서로 일치하는 행을 찾아 반환하는 예제입니다.

my_list_1 = [[21, 81, 35], [91, 14, 0], [64, 61, 42]]
my_list_2 = [[21, 92, 63], [80, 19, 65], [54, 65, 36]]

print("첫 번째 리스트 :")
print(my_list_1)
print("두 번째 리스트 :")
print(my_list_2)

# 비교 기준이 될 인덱스 위치
my_key = 0

my_result = []
for index in range(len(my_list_1)):
    # 각 행에서 my_key 위치의 요소가 두 리스트에서 일치하는지 확인
    if my_list_1[index][my_key] == my_list_2[index][my_key]:
        my_result.append(my_list_1[index])

print("결과 :")
print(my_result)

실행 결과

첫 번째 리스트 :
[[21, 81, 35], [91, 14, 0], [64, 61, 42]]
두 번째 리스트 :
[[21, 92, 63], [80, 19, 65], [54, 65, 36]]
결과 :
[[21, 81, 35]]

코드 설명

  • 리스트 정의: 비교 대상이 되는 두 개의 중첩 리스트를 정의하고 콘솔에 출력합니다.
  • 키(인덱스) 설정: 비교 기준이 될 인덱스 값을 my_key 변수에 저장합니다. 여기서는 0을 사용했으므로 각 행의 첫 번째 요소를 기준으로 비교합니다.
  • 빈 리스트 생성: 조건을 만족하는 행을 담기 위해 빈 리스트 my_result를 준비합니다.
  • 행 단위 비교: 첫 번째 리스트의 길이만큼 반복하면서, 두 리스트의 같은 위치에 있는 행에서 my_key 인덱스의 요소가 일치하는지 확인합니다.
  • 조건 충족 시 저장: 요소가 일치하면 해당 행 전체를 결과 리스트에 추가(append)합니다.
  • 결과 출력: 최종 결과를 콘솔에 출력합니다. 예제에서는 두 리스트의 첫 번째 행인 [21, 81, 35][21, 92, 63]의 첫 번째 요소가 모두 21로 일치하므로 이 행만 결과에 포함됩니다.

더 간결하게: 리스트 컴프리헨션 활용

같은 로직은 리스트 컴프리헨션(list comprehension)을 사용하면 한 줄로 표현할 수도 있습니다.

my_key = 0
my_result = [row for row, other in zip(my_list_1, my_list_2) if row[my_key] == other[my_key]]
print(my_result)  # [[21, 81, 35]]

zip() 함수를 사용하면 두 리스트를 동시에 순회할 수 있어 인덱스 관리가 한층 편리해집니다. 데이터 규모가 작다면 어떤 방식을 선택해도 무방하지만, 코드가 길어질수록 리스트 컴프리헨션과 zip()을 활용한 접근이 가독성과 유지보수 측면에서 더욱 유리합니다.