문자열을 특정 구분자로 나눈 뒤, 분할된 조각들이 모두 동일한 값인지 확인해야 하는 경우가 종종 있습니다. 이럴 때는 len() 함수, list, 그리고 set 자료형을 if 조건문과 함께 사용하면 간단하게 해결할 수 있습니다.
핵심 원리
핵심 아이디어는 매우 직관적입니다. 문자열을 구분자로 분할한 결과를 set으로 변환하면 중복 요소가 자동으로 제거되어 고유한 값만 남게 됩니다. 만약 모든 조각이 동일하다면 고유 요소는 딱 하나뿐일 것이므로, 집합의 길이가 1인지 검사하면 곧바로 결과를 알 수 있습니다.
예제 코드
아래는 전체 과정을 보여주는 예제입니다.
my_string = '96%96%96%96%96%96'
print("확인할 문자열 : ")
print(my_string)
my_split_char = "%"
print("문자열을 나눌 기준 문자 :")
print(my_split_char)
my_result = len(list(set(my_string.split(my_split_char)))) == 1
if my_result == True:
print("모든 조각이 서로 같습니다.")
else:
print("조각 중에 서로 다른 값이 존재합니다.")
실행 결과
확인할 문자열 : 96%96%96%96%96%96 문자열을 나눌 기준 문자 : % 모든 조각이 서로 같습니다.
코드 설명
- 먼저 확인 대상이 되는 문자열을 정의하고 콘솔에 출력합니다.
- 문자열을 나눌 기준이 되는 구분자 문자를 정의하고, 이 역시 화면에 표시합니다.
split()메서드를 사용해 문자열을 구분자 기준으로 분할합니다.- 분할 결과를
set으로 변환하여 중복 요소를 제거하고 고유한 값만 남깁니다. - 이 집합을 다시
list로 변환한 뒤, 그 길이가 1과 같은지 비교합니다. - 비교 결과로 얻은 불리언 값을 변수에 저장합니다.
if조건문에서 이 불리언 값을 판단해, 모든 조각이 동일한지 여부에 따라 적절한 메시지를 출력합니다.
참고: 더 간결한 대안
중간에 list로 변환하는 단계를 생략하고 집합의 길이만 바로 확인해도 동일한 결과를 얻을 수 있습니다.
parts = my_string.split(my_split_char) is_equal = len(set(parts)) == 1
또는 all() 함수를 사용해 첫 번째 조각과 나머지 조각들을 일괄 비교하는 방법도 있습니다. 데이터 양이 많을 경우 조기 종료(early exit)가 가능해 성능 면에서 유리할 수 있습니다.
is_equal = all(part == parts[0] for part in parts)