리스트를 다루다 보면 모든 요소가 동일한 값으로 구성되어 있는지 확인해야 하는 경우가 있습니다. 이 글에서는 Python에서 리스트의 모든 요소가 같은지 검증하는 대표적인 방법들을 예제 코드와 함께 소개합니다.
1. all() 함수 활용하기
all() 함수는 리스트의 각 요소를 첫 번째 요소와 비교한 결과를 종합합니다. 모든 비교 결과가 참(True)이면 전체 요소가 동일하다고 판단하고, 하나라도 다르면 동일하지 않은 것으로 처리합니다.
예제
listA = ['Sun', 'Sun', 'Mon']
resA = all(x == listA[0] for x in listA)
if resA:
print("ListA의 모든 요소가 동일합니다")
else:
print("ListA의 요소 중 일부는 동일하지 않습니다")
listB = ['Sun', 'Sun', 'Sun']
resB = all(x == listB[0] for x in listB)
if resB:
print("ListB의 모든 요소가 동일합니다")
else:
print("ListB의 요소 중 일부는 동일하지 않습니다")실행 결과
ListA의 요소 중 일부는 동일하지 않습니다 ListB의 모든 요소가 동일합니다
2. count() 메서드 활용하기
이 방법은 첫 번째 요소가 리스트에 등장하는 횟수를 세어 리스트 전체 길이와 비교합니다. 모든 요소가 동일하다면 개수가 길이와 일치하고, 그렇지 않으면 일치하지 않습니다.
예제
listA = ['Sun', 'Sun', 'Mon']
resA = listA.count(listA[0]) == len(listA)
if resA:
print("ListA의 모든 요소가 동일합니다")
else:
print("ListA의 요소 중 일부는 동일하지 않습니다")
listB = ['Sun', 'Sun', 'Sun']
resB = listB.count(listB[0]) == len(listB)
if resB:
print("ListB의 모든 요소가 동일합니다")
else:
print("ListB의 요소 중 일부는 동일하지 않습니다")실행 결과
ListA의 요소 중 일부는 동일하지 않습니다 ListB의 모든 요소가 동일합니다
3. set() 활용하기 (추가 팁)
리스트를 set(집합)으로 변환하면 중복된 값이 자동으로 제거됩니다. 따라서 변환된 집합의 길이가 1이라면 모든 요소가 동일하다는 의미입니다. 다만 빈 리스트는 집합의 길이가 0이 되므로, 필요하다면 빈 리스트 여부를 먼저 확인하는 것이 안전합니다.
예제
listC = ['Sun', 'Sun', 'Sun']
resC = len(set(listC)) == 1
print("ListC의 모든 요소가 동일합니다" if resC else "ListC의 요소 중 일부는 동일하지 않습니다")실행 결과
ListC의 모든 요소가 동일합니다
정리
세 가지 방법 모두 간단하게 활용할 수 있습니다. 가독성과 명확성을 원한다면 all() 함수를, 성능이 중요한 큰 리스트에서는 count()나 set() 방식도 좋은 선택이 될 수 있습니다. 상황에 맞는 방법을 골라 사용해 보세요.