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

파이썬으로 리스트에서 입력 문자열과 거의 일치하는 모든 항목 찾기

이 튜토리얼에서는 하나의 문제를 해결하는 방법을 알아보겠습니다. 문제의 내용은 다음과 같습니다. 문자열 리스트하나의 요소(element)가 주어졌을 때, 리스트 안에서 해당 요소와 서로 접두어 관계에 있는, 즉 거의 일치하는 문자열들을 모두 찾아야 합니다.

문제 이해하기

예시를 통해 문제를 더 쉽게 이해해 보겠습니다.

입력
strings = ["Lion", "Li", "Tiger", "Tig"]
element = "Lion"

출력
Lion Li

위 예시에서 "Lion"은 element 그 자체이고, "Li"는 element로 시작하는(즉, element의 접두어인) 문자열입니다. 따라서 두 문자열 모두 조건에 부합하므로 출력 결과가 됩니다.

해결 방법

이 문제는 파이썬에서 기본적으로 제공하는 startswith() 메서드를 활용하면 간단하게 해결할 수 있습니다. startswith() 메서드는 어떤 문자열이 특정 문자열로 시작하는지 확인하여 True 또는 False를 반환합니다.

풀이 순서는 다음과 같습니다.

  • 문자열 리스트와 비교할 문자열(element)을 초기화합니다.
  • 리스트를 순회하면서 각 문자열을 검사합니다.
    • 리스트의 문자열이 element로 시작하거나, 반대로 element가 리스트의 문자열로 시작하는 경우 조건을 만족합니다.
  • 조건을 만족하는 문자열을 출력합니다.

여기서 핵심은 양방향으로 검사한다는 점입니다. 리스트의 문자열이 element보다 짧은 경우(예: "Li" vs "Lion")와 긴 경우(예: "Lioness" vs "Lion")를 모두 고려해야 하기 때문입니다.

예제 코드

## 문자열 리스트 초기화
strings = ["Lion", "Li", "Tiger", "Tig"]
element = "Lion"

for string in strings:
    ## 위에서 언급한 조건 검사
    if string.startswith(element) or element.startswith(string):
        ## 조건을 만족하는 문자열 출력
        print(string, end = " ")
print()

실행 결과

위 프로그램을 실행하면 다음과 같은 결과가 출력됩니다.

Lion Li

마무리

이처럼 startswith() 메서드를 활용하면 별도의 외부 라이브러리 없이도 리스트에서 특정 문자열과 거의 일치하는 항목들을 손쉽게 찾을 수 있습니다. 대소문자 구분 없이 비교하고 싶다면, 비교 전에 lower() 메서드로 두 문자열을 소문자로 변환한 후 검사하면 됩니다. 프로그램에 대해 궁금한 점이 있다면 댓글로 남겨주세요.