본문 바로가기
Programming/Python

[Python] list에서 가장 많이 반복되는 숫자를 찾는 방법

by 혀코 2022. 7. 25.

 

안녕하세요. 혀코입니다.

이번 시간에는 Python을 사용해 list에서 가장 많이 반복되는 숫자를 찾는 방법에 대해서 알아보겠습니다.

가장 많이 사용된 숫자를 찾는 방법 3가지에 대해서 알아보겠습니다.

 

모듈 사용하지 않는 방법

 

numbers = [1, 2, 3, 2, 4, 3, 4, 4, 3, 3]

print(max(set(numbers), key = numbers.count))

# 3

 

숫자로 된 list를 numbers 변수에 넣었습니다.

set 함수는 반복되지 않게 1, 2, 3, 4를 반환하며, 반환된 set 값을 바탕으로 숫자를 카운팅해서 가장 많이 반복되는 숫자를 반환합니다.

 

collections모듈에서 Counter 서브 모듈을 사용하는 방법

 

from collections import Counter

numbers = [1, 2, 3, 2, 4, 3, 4, 4, 3, 3]

a = Counter(numbers)

print(a)

# Counter({3: 4, 4: 3, 2: 2, 1: 1})

print(a.most_common(1))

# [(3,4)]

 

숫자로된 리스트를 Counter 서브 모듈로 돌리면,  dictionary 형태의 값을 반환합니다.

이것을 다시 most_common(1)을 적용하면, 가장 많이 반복되는 수와 카운트를 얻을 수 있습니다.

 

itertools와 operator 모듈을 사용하는 경우

import itertools
import operator

numbers = [1, 2, 3, 2, 4, 3, 4, 4, 3, 3]

a = max(((n, len(list(g))) for n, g in itertools.groupby(sorted(numbers))), key=operator.itemgetter(1))

print(a)

# (3, 4)

 

두번째 방법과 유사합니다. sorted(numbers) 하면 list 가 오름차순으로 정렬이 되고, 이것을 itertools.groupby 돌리면 각 숫자와 숫자가 반복되는 list가 반환되고 이것을 다시 숫자와 숫자가 반복되는 list의 길이를 반환합니다. 또 이것을 operator.itemgetter(1)을 통해 가장 많이 반복되는 list의 길이를 기준으로 가장 많이 반복되는 값을 출력합니다.

 

마지막 방법은 길이도 길이지만 설명이 많이 복잡하네요.

개인적으로 두번째 방법을 쓰거나 첫번째 방법을 사용할 것 같습니다.

 

이렇게 Python을 사용해 list에서 가장 많이 반복되는 숫자를 찾는 방법에 대해서 알아봤습니다.

해당 정보가 유용하셨다면, 공감과 구독 부탁 드립니다.

감사합니다. :)

댓글