본문 바로가기

Language/Python

[문법] List의 최빈값 출력하기

 List 최빈값 출력하기

List 중에 빈도수가 가장 높은 요소를 출력하는 코드를 구현해보자.
(단, 빈도수가 같은 요소가 2개 이상일 경우, 가장 앞에 있는 요소를 출력.)

  • 입출력 형식 
    [입력]
    [1, 2, 3, 1, 2, 1, 1, 1]​
     [출력]
    "max count num is 1"

 

방법 1. 직접 구현

# [방법 1] 직접 구현.
# : 함수를 사용 하지 않고 직접 구현

def most_frequent(n_list):
    length = len(n_list)
    max_num_index = 0
    max_num_count = 0

    for i in range(length):
        num_count = 1
        for j in range(i + 1, length):
            if n_list[i] == n_list[j]:
                num_count += 1
        if num_count > max_num_count:
            max_num_count = num_count
            max_num_index = i

    return n_list[max_num_index]


# ----------------------------------------------------
num_list = [1, 2, 3, 1, 2, 1, 1, 1]
print(f"most frequent num is {most_frequent(num_list)}")

 

 

 

 

방법 2. count, max, index 함수 활용

# [방법 2] 함수 활용 로직 구현.
# :  count, max, index 함수를 이용

def most_frequent(n_list):
    count_list = []  # count를 담을 리스트 생성. (이때 해당 리스트의 인덱스와 인풋 리스트의 인덱스는 동일)
    for i in n_list:
        count_list.append(n_list.count(i))
    result_index = count_list.index(max(count_list))       #리스트.index(수)의 경우, 수에 해당하는 제일 처음의 인덱스를 반환.
    return n_list[result_index]


# ----------------------------------------------------
num_list = [1, 2, 3, 1, 2, 1, 1, 1]
print(f"most frequent num is {most_frequent(num_list)}")

 

 

 

 

방법 3. max, count 함수를 통한 함축 구현 😊

# [방법 3] 응용 구현
# :  count, max 함수를 이용

def most_frequent(n_list):
    return max(n_list, key=n_list.count)       # 이때, key값은 함수 이외 람다함수도 가능.


# ----------------------------------------------------
num_list = [1, 2, 3, 1, 2, 1, 1, 1]
print(f"most frequent num is {most_frequent(num_list)}")

✔ max의 key : 함수로 구현되어있으며, lambda함수로 작성 가능 O

더보기

max 함수의 사용

max(iterable, *[, default=obj, key=func]) -> value
max(arg1, arg2, *args, *[, key=func]) -> value

: max 함수의 경우 첫인자로 literal 변수를 넣고, key를 이용해 funtional 함수를 활용이 가능하다.

: max 함수에서 key를 사용하는 주된 목적은 index(key)와 value 짝의 튜플형태로 이루어진 리스트에서 key와       value 중에 어떤것을 기준으로 max값을 구할지 선택하기위한 목적으로 많이 활용된다.

 

 


 

🔔 중요개념정리

  1. len(리스트) : 리스트의 길이 출력
  2. 리스트.index(요소) : 리스트에서 해당 요소의 인덱스를 반환. 이때, 결과 값이 여러개일 경우 첫 인덱스 반환.
  3. max(리스트, key = '함수')

 

 

728x90