프로그래밍을 하다 보면 리스트에 담긴 모든 요소가 하나의 동일한 값으로만 이루어져 있는지 확인해야 하는 경우가 종종 있습니다. 예를 들어, 어떤 조건이 전부 참인지 검증하거나 데이터의 일관성을 점검할 때 유용합니다. 이번 글에서는 Python에서 리스트의 모든 요소가 같은지 판별하는 대표적인 세 가지 방법을 예제 코드와 함께 살펴보겠습니다.
1. for 반복문 사용하기
가장 기본적인 방법은 리스트의 첫 번째 요소를 기준값으로 삼고, for 반복문을 통해 나머지 모든 요소와 하나씩 비교하는 것입니다. 비교 중 단 하나의 요소라도 첫 번째 요소와 값이 다르면 더 이상 검사를 진행할 필요가 없으므로 break로 반복문을 빠져나오고 결과는 False가 됩니다.
예제
List = ['Mon', 'Mon', 'Mon', 'Mon']
result = True
# 첫 번째 요소를 기준값으로 지정
first_element = List[0]
# 모든 요소를 첫 번째 요소와 비교
for word in List:
if first_element != word:
result = False
break
if result:
print("모든 요소가 동일합니다")
else:
print("모든 요소가 동일하지 않습니다")위 코드를 실행하면 다음과 같은 결과가 출력됩니다.
모든 요소가 동일합니다
2. all() 함수 사용하기
all() 함수는 iterable의 모든 요소가 참일 때 True를 반환합니다. 이를 활용하면 위에서 for 반복문으로 작성했던 비교 로직을 한 줄의 제너레이터 표현식으로 간결하게 처리할 수 있습니다.
예제
List = ['Mon', 'Mon', 'Tue', 'Mon']
# all() 함수로 모든 요소가 첫 번째 요소와 같은지 검사
result = all(element == List[0] for element in List)
if result:
print("모든 요소가 동일합니다")
else:
print("모든 요소가 동일하지 않습니다")리스트에 'Tue'라는 다른 값이 포함되어 있으므로, 위 코드를 실행하면 다음과 같은 결과가 출력됩니다.
모든 요소가 동일하지 않습니다
3. count() 메서드 사용하기
Python 리스트의 count() 메서드는 특정 요소가 리스트 안에 몇 번 등장하는지 개수를 반환합니다. 만약 리스트의 모든 요소가 같은 값이라면, 첫 번째 요소의 등장 횟수(count)가 리스트 전체 길이(len)와 일치해야 합니다. 이 성질을 이용해 아래와 같이 간단히 판별할 수 있습니다.
예제
List = ['Mon', 'Mon', 'Mon', 'Mon']
# count() 결과와 len() 결과가 일치하는지 비교
result = List.count(List[0]) == len(List)
if result:
print("모든 요소가 동일합니다")
else:
print("모든 요소가 동일하지 않습니다")위 코드를 실행하면 다음과 같은 결과가 출력됩니다.
모든 요소가 동일합니다
방법별 특징 정리
- for 반복문: 로직이 명확하고 직관적이지만 코드가 상대적으로 길어집니다. 불일치를 발견하는 즉시 중단할 수 있어 효율적입니다.
- all(): 가장 파이써닉(Pythonic)하고 간결한 방법입니다. 내부적으로 불일치를 발견하면 평가를 중단하므로 성능도 좋습니다. 단, 빈 리스트에는 True를 반환한다는 점에 유의해야 합니다.
- count(): 코드가 매우 짧지만, 불일치 요소가 뒤쪽에 있더라도 끝까지 개수를 세므로 큰 리스트에서는 앞의 두 방법보다 느릴 수 있습니다. 또한 빈 리스트에 적용하면 인덱스 오류(IndexError)가 발생하므로 사전에 길이를 확인하는 것이 안전합니다.
상황에 따라 적절한 방법을 선택하면 되며, 일반적으로는 간결함과 가독성이 뛰어난 all() 방식이 가장 널리 사용됩니다.