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

Python으로 슈퍼시퀀스 문자열 필터링하기

파이썬에서 슈퍼시퀀스(supersequence) 문자열, 즉 특정 문자열의 모든 문자를 포함하는 문자열을 필터링해야 할 때는 간단한 리스트 컴프리헨션(list comprehension)을 활용하면 됩니다. 복잡한 로직 없이 all() 내장 함수와 조합하면 단 몇 줄의 코드로 원하는 결과를 얻을 수 있습니다.

예제 코드

다음은 리스트에서 부분 문자열의 모든 문자를 포함하는 요소만 추출하는 예제입니다.

my_list = ["Python", "/", "is", "alwaysgreat", "to", "learn"]

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

substring = "ys"

my_result = [sub for sub in my_list if all(elem in sub for elem in substring)]

print("The resultant string is :")
print(my_result)

실행 결과

The list is :
['Python', '/', 'is', 'alwaysgreat', 'to', 'learn']
The resultant string is :
['alwaysgreat']

코드 설명

  • 먼저 문자열 요소들로 이루어진 리스트를 정의하고 콘솔에 출력합니다.

  • 필터링 기준이 될 부분 문자열(substring)인 "ys"를 정의합니다.

  • 리스트 컴프리헨션이 리스트의 각 요소를 순회하면서, all() 함수를 통해 부분 문자열의 모든 문자('y''s')가 해당 요소 안에 존재하는지 검사합니다.

  • 조건을 만족하는 요소들만 모아 새로운 리스트를 만들고, 그 결과를 변수 my_result에 할당합니다.

  • 최종 필터링 결과가 콘솔에 출력됩니다. 위 예제에서는 'alwaysgreat'만이 'y''s'를 모두 포함하고 있으므로 유일하게 남게 됩니다.

이처럼 all()과 제너레이터 표현식을 함께 사용하면 가독성 높은 코드로 다중 조건 필터링을 처리할 수 있습니다. 대량의 문자열 데이터에서 특정 패턴을 만족하는 항목을 걸러낼 때 특히 유용한 기법이니 꼭 익혀두시기 바랍니다.