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값을 구할지 선택하기위한 목적으로 많이 활용된다.
🔔 중요개념정리
- len(리스트) : 리스트의 길이 출력
- 리스트.index(요소) : 리스트에서 해당 요소의 인덱스를 반환. 이때, 결과 값이 여러개일 경우 첫 인덱스 반환.
- max(리스트, key = '함수')
728x90
'Language > Python' 카테고리의 다른 글
| [문법] 재귀 함수와 제한 (0) | 2022.03.02 |
|---|---|
| [문법] 리스트 요소 반대로 나열하기 (0) | 2022.03.01 |
| [문법] Set, List, Dictionary (작성 中) (0) | 2022.02.21 |
| [문법] 제너레이터(Generator) (0) | 2022.02.10 |
| [문법] 소수점 자리 제한하기 (0) | 2022.02.08 |