이 튜토리얼에서는 배열(리스트)에 있는 모든 요소의 빈도, 즉 각 요소가 몇 번 등장하는지를 계산하는 프로그램을 작성해 보겠습니다. 빈도를 구하는 방법은 다양하지만, 여기서는 가장 많이 사용되는 두 가지 방법을 소개합니다.
방법 1: 딕셔너리(dict) 활용하기
딕셔너리를 사용하면 별도의 모듈 없이 순수 파이썬 문법만으로 빈도를 계산할 수 있습니다. 진행 순서는 다음과 같습니다.
배열을 초기화합니다.
빈도를 저장할 빈 딕셔너리를 생성합니다.
리스트를 순회하면서 다음을 수행합니다.
요소가 딕셔너리에 없다면 값을 1로 설정합니다.
요소가 이미 딕셔너리에 있다면 기존 값에 1을 더합니다.
딕셔너리를 순회하며 요소와 빈도를 출력합니다.
예제 코드
# 리스트 초기화
arr = [1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 3]
# 각 요소의 빈도를 저장할 딕셔너리 초기화
elements_count = {}
# 요소별 빈도 계산을 위한 반복문
for element in arr:
# 딕셔너리에 해당 요소가 있는지 확인
if element in elements_count:
# 카운트 1 증가
elements_count[element] += 1
else:
# 처음 등장한 요소라면 카운트를 1로 설정
elements_count[element] = 1
# 요소와 빈도 출력
for key, value in elements_count.items():
print(f"{key}: {value}")실행 결과
위 코드를 실행하면 아래와 같은 결과를 얻을 수 있습니다.
1: 3 2: 4 3: 5
방법 2: collections 모듈의 Counter 클래스 활용하기
파이썬 표준 라이브러리인 collections 모듈에는 빈도 계산에 특화된 Counter 클래스가 포함되어 있습니다. 이 클래스를 사용하면 코드를 훨씬 간결하게 작성할 수 있습니다. 진행 순서는 다음과 같습니다.
collections 모듈을 임포트합니다.
배열을 초기화합니다.
리스트를 Counter 클래스에 전달하고, 결과를 변수에 저장합니다.
결과를 순회하며 요소와 빈도를 출력합니다.
예제 코드
# collections 모듈 임포트
import collections
# 배열 초기화
arr = [1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 3]
# Counter 클래스로 요소별 빈도 계산
elements_count = collections.Counter(arr)
# 요소와 빈도 출력
for key, value in elements_count.items():
print(f"{key}: {value}")실행 결과
위 코드를 실행하면 첫 번째 방법과 동일한 결과가 출력됩니다.
1: 3 2: 4 3: 5
마무리
두 방법 모두 동일한 결과를 제공하지만, 상황에 따라 선택 기준이 달라질 수 있습니다. 외부 의존성 없이 로직을 직접 제어하고 싶다면 딕셔너리 방식이 적합하고, 코드를 간결하게 유지하면서 성능까지 챙기고 싶다면 Counter 클래스를 사용하는 것이 좋습니다. 실무에서는 대부분 Counter를 활용하는 편입니다. 튜토리얼 내용 중 궁금한 점이나 어려운 부분이 있다면 댓글로 남겨주세요.