리스트 안에 리스트가 중첩된 형태의 매트릭스(행렬)에서 특정 문자열 K가 포함된 행을 찾아야 하는 경우가 종종 있습니다. 이럴 때 파이썬의 내장 함수인 enumerate()와 간단한 반복문, 그리고 리스트 메서드 append()를 조합하면 손쉽게 해결할 수 있습니다.
예제 코드
아래 예제는 매트릭스 내에서 문자열 'Pyt'를 포함하는 행의 인덱스를 찾는 과정을 보여줍니다.
my_list = [["Pyt", "fun", "python"], ["python", "rock"],["Pyt", "for", "CS"], ["Keep", "learning"]]
print("The list is :")
print(my_list)
K = "Pyt"
my_result = []
for idx, element in enumerate(my_list):
if K in element:
my_result.append(idx)
print("The result is :")
print(my_result)실행 결과
The list is : [['Pyt', 'fun', 'python'], ['python', 'rock'], ['Pyt', 'for', 'CS'], ['Keep', 'learning']] The result is : [0, 2]
코드 설명
중첩된 리스트(매트릭스)를 정의한 뒤 콘솔에 출력합니다.
찾고자 하는 문자열 값을 변수
K에 할당합니다.결과를 저장할 빈 리스트
my_result를 생성합니다.enumerate()함수를 사용해 각 행과 그 인덱스를 함께 순회합니다.조건문을 통해 현재 행의 요소 목록 안에
K가 존재하는지 확인합니다.조건이 참이면 해당 행의 인덱스를 결과 리스트에 추가(
append)합니다.모든 행을 확인한 후, 조건을 만족하는 인덱스 목록이 최종적으로 콘솔에 출력됩니다.
참고: 리스트 컴프리헨션으로 더 간결하게 작성하기
위 로직은 리스트 컴프리헨션(list comprehension)을 사용하면 한 줄로 표현할 수도 있습니다.
my_result = [idx for idx, element in enumerate(my_list) if K in element]
이 방식은 가독성이 높으면서 성능 면에서도 동일하게 동작하므로, 실무에서 자주 활용됩니다.