데이터를 처리하다 보면 특정 단어나 문자열이 주어진 목록에 존재하는지 확인해야 하는 경우가 매우 자주 발생합니다. 이러한 확인 작업은 이후 비즈니스 로직을 처리하는 데 중요한 기초가 되며, 데이터 필터링이나 분류 작업의 전 단계로 활용됩니다. 이 글에서는 여러 개의 문자열로 이루어진 목록 안에 특정 문자열(예: 접미사)이 존재하는지 확인하는 다양한 방법을 예제와 함께 살펴보겠습니다.
any() 함수 사용하기
Python의 any() 함수는 반복 가능한 객체(iterable)의 요소 중 하나라도 조건을 만족하면 True를 반환하고, 하나도 만족하지 않으면 False를 반환합니다. 아래 예제에서는 조건문(if)과 함께 any() 함수를 사용하여 주어진 문자열이 목록에 포함되어 있는지 여부를 판별합니다.
예제
# 주어진 리스트
lstA = ["Tue", "Fri", "Sun"]
# 확인할 문자열
str = 'Sun'
# any 함수 사용
if any(str in i for i in lstA):
print(f"{str}은(는) 주어진 리스트에 존재합니다.")
else:
print(f"{str}은(는) 주어진 리스트에 없습니다.")실행 결과
Sun은(는) 주어진 리스트에 존재합니다.
filter() 함수 사용하기
filter() 함수는 지정된 함수를 통해 각 요소를 검사한 뒤, 조건을 통과한 요소들로 구성된 반복자(iterator)를 반환합니다. 아래 예제에서는 filter()의 결과를 리스트로 변환한 후 그 길이를 확인합니다. 길이가 0보다 크면 해당 문자열이 목록에 존재하는 것이고, 그렇지 않으면 존재하지 않는 것으로 판단합니다.
예제
# 주어진 리스트
lstA = ["Tue", "Fri", "Sun"]
# 확인할 문자열
str = 'Wed'
# filter 함수 사용
if len(list(filter(lambda x: str in x, lstA))) != 0:
print(f"{str}은(는) 주어진 리스트에 존재합니다.")
else:
print(f"{str}은(는) 주어진 리스트에 없습니다.")실행 결과
Wed은(는) 주어진 리스트에 없습니다.
참고: 실제 접미사 일치 여부를 확인할 때
위의 두 예제는 문자열이 목록의 요소에 부분 문자열(substring)로 포함되어 있는지를 확인하는 방식입니다. 만약 목록의 문자열이 특정 접미사로 끝나는지 정확하게 확인하고 싶다면 endswith() 메서드를 사용하는 것이 더 명확하고 안전합니다.
# 주어진 리스트 lstA = ["Tue", "Fri", "Sun"] # 확인할 접미사 suffix = 'un' # endswith로 접미사 일치 항목 찾기 result = [s for s in lstA if s.endswith(suffix)] print(result)
실행 결과
['Sun']
마무리
간단한 존재 여부만 확인한다면 가독성이 좋은 any() 방식이 적합하고, 조건을 만족하는 요소들을 직접 추출해야 한다면 filter()나 리스트 컴프리헨션이 유용합니다. 또한 접미사처럼 문자열의 위치까지 정확히 검사해야 할 때는 endswith()(또는 접두사의 경우 startswith())를 사용하는 것이 바람직합니다. 상황에 맞는 방법을 선택하면 코드의 의도가 분명해지고 유지보수도 쉬워집니다.