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

Python – 매트릭스에서 특정 문자열(K)이 포함된 행 찾기

리스트 안에 리스트가 중첩된 형태의 매트릭스(행렬)에서 특정 문자열 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]

이 방식은 가독성이 높으면서 성능 면에서도 동일하게 동작하므로, 실무에서 자주 활용됩니다.