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

Python – 값과 동일한 빈도로 나타나는 요소 추출하기

리스트에서 자신의 값과 동일한 횟수만큼 등장하는 요소를 추출해야 하는 경우가 있습니다. 예를 들어 값이 4인 요소는 정확히 4번, 값이 2인 요소는 정확히 2번 나타나야 추출 대상이 되는 방식입니다.

이러한 작업은 파이썬의 리스트 컴프리헨션(list comprehension), count() 메서드, 그리고 set() 연산자를 조합하면 간단하게 구현할 수 있습니다.

예제 코드

my_list = [4, 1, 8, 6, 2, 4, 1, 3, 2, 4, 4]

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

my_result = list(set([element for element in my_list if my_list.count(element) == element]))

print("The result is :")
print(my_result)

실행 결과

The list is :
[4, 1, 8, 6, 2, 4, 1, 3, 2, 4, 4]
The result is :
[2, 4]

코드 설명

  • 먼저 리스트를 정의하고 콘솔에 출력합니다.

  • 리스트 컴프리헨션을 사용하여 리스트의 각 요소를 순회하면서, 해당 요소가 리스트에 등장하는 횟수(count())와 요소 자체의 값을 비교합니다. 두 값이 일치하는 요소만 새로운 리스트에 담깁니다.

  • 중복을 제거하기 위해 결과를 set()으로 변환한 뒤, 다시 list()로 변환합니다.

  • 최종 결과는 변수 my_result에 할당됩니다.

  • 결과를 콘솔에 출력하면 [2, 4]가 표시됩니다. 이는 2가 두 번, 4가 네 번 등장했기 때문입니다.

참고 사항

count() 메서드는 호출될 때마다 전체 리스트를 순회하므로, 리스트의 크기가 크다면 시간 복잡도가 O(n²)까지 증가할 수 있습니다. 성능이 중요한 환경에서는 collections.Counter를 활용해 빈도를 미리 계산해 두는 것이 더 효율적입니다.