Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

Python – Counter를 활용한 연속 요소 재정렬 방법

파이썬에서 리스트의 연속된 요소들을 재정렬해야 하는 경우, collections 모듈의 Counter 클래스와 빈 리스트, 그리고 간단한 반복문을 활용하면 손쉽게 해결할 수 있습니다.

Counter는 리스트 내 각 요소의 등장 횟수(빈도)를 딕셔너리 형태로 계산해 주는 도구로, 이를 이용하면 중복된 요소들이 서로 인접하도록 리스트를 재배치할 수 있습니다.

예제 코드

아래는 위 방식을 구현한 예제입니다.

from collections import Counter

my_list = [21, 83, 44, 52, 61, 72, 81, 96, 18, 44]

print("The list is :")
print(my_list)

my_frequencys = Counter(my_list)
my_result = []

for value, count in my_frequencys.items():
   my_result.extend([value]*count)

print("The resultant list is :")
print(my_result)

실행 결과

The list is :
[21, 83, 44, 52, 61, 72, 81, 96, 18, 44]
The resultant list is :
[21, 83, 44, 44, 52, 61, 72, 81, 96, 18]

코드 설명

  • collections 모듈에서 Counter를 임포트하여 환경에 준비합니다.

  • 재정렬할 리스트를 정의한 뒤 콘솔에 출력합니다.

  • 리스트에 대해 Counter 객체를 생성하고 변수에 할당합니다. 이 객체에는 각 요소별 등장 횟수가 저장됩니다.

  • 결과를 담을 빈 리스트를 하나 생성합니다.

  • Counter의 각 (값, 개수) 쌍에 접근하여, 해당 값을 개수만큼 반복한 리스트를 만들고 extend()로 결과 리스트에 추가합니다. 이 과정에서 동일한 값들은 서로 붙어 있게 됩니다.

  • 최종적으로 재정렬된 리스트가 콘솔에 출력됩니다.

핵심 포인트

이 기법은 정렬(sorting)과 달리 요소들의 상대적 순서를 유지하면서 중복 값을 인접하게 배치한다는 점이 특징입니다. 예제에서 볼 수 있듯이 원래 떨어져 있던 두 개의 44가 실행 후 서로 나란히 위치하게 됩니다. 데이터 전처리나 중복 그룹화 작업에서 유용하게 활용할 수 있습니다.