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