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

접두사 목록을 기반으로 문자열을 필터링하는 Python 프로그램


문자열 목록에서 특정 접두사로 시작하는 문자열만 골라내야 하는 경우, 리스트 컴프리헨션, any() 함수, 그리고 startswith() 메서드를 조합하면 매우 간결하게 처리할 수 있습니다.

예제 코드

아래 예제를 통해 실제 동작 방식을 살펴보겠습니다.

my_list = ["streek", "greet", "meet", "leeks", "mean"]

print("The list is : ")
print(my_list)

prefix_list = ["st", "ge", "me", "re"]
print("The prefix list is : ")
print(prefix_list)

my_result = [element for element in my_list if any(element.startswith(ele) for ele in prefix_list)]

print("The result is :")
print(my_result)

실행 결과

The list is :
['streek', 'greet', 'meet', 'leeks', 'mean']
The prefix list is :
['st', 'ge', 'me', 're']
The result is :
['streek', 'meet', 'mean']

코드 설명

  • 먼저 문자열로 구성된 리스트(my_list)를 정의하고 콘솔에 출력합니다.
  • 이어서 접두사 후보들을 담은 리스트(prefix_list)를 정의하고 콘솔에 출력합니다.
  • 리스트 컴프리헨션을 사용해 원본 리스트의 각 요소를 순회하면서, 해당 요소가 접두사 리스트에 포함된 문자열 중 하나라도 일치하는지 any()startswith()로 검사합니다.
  • 조건을 만족하는 요소만 새로운 리스트에 저장됩니다.
  • 필터링된 결과는 변수 my_result에 할당됩니다.
  • 최종 결과가 콘솔에 출력됩니다.

추가 팁

  • str.startswith() 메서드는 튜플을 인자로 받을 수 있습니다. 따라서 element.startswith(("st", "ge", "me", "re"))처럼 작성하면 any() 없이도 동일한 결과를 더 짧은 코드로 얻을 수 있습니다.
  • 리스트 컴프리헨션은 일반적인 for 반복문보다 가독성이 좋고 실행 속도도 빠른 편이므로, 필터링 작업에 적극적으로 활용하면 좋습니다.