리스트 안에 특정 숫자가 몇 번 등장하는지(빈도) 확인해야 할 때가 종종 있습니다. 이럴 때는 리스트와 찾으려는 숫자를 매개변수로 받는 함수를 정의하고, 리스트를 한 요소씩 순회하면서 해당 숫자를 만날 때마다 카운터를 1씩 증가시키는 방식으로 손쉽게 해결할 수 있습니다.
아래에서 실제 동작 과정을 살펴보겠습니다.
예제 코드
def count_num(my_list, x_val):
my_counter = 0
for elem in my_list:
if (elem == x_val):
my_counter = my_counter + 1
return my_counter
my_list = [66, 26, 48, 140, 66, 20, 1, 96, 86]
print("The list is :")
print(my_list)
occ_number = 66
print('{} has occurred {} times'.format(occ_number, count_num(my_list, occ_number)))실행 결과
The list is : [66, 26, 48, 140, 66, 20, 1, 96, 86] 66 has occurred 2 times
코드 설명
count_num이라는 이름의 함수를 정의하며, 리스트(my_list)와 찾으려는 숫자(x_val) 두 개의 매개변수를 받습니다.
for 문으로 리스트를 순회하면서, 각 요소가 찾는 숫자와 일치할 때마다 카운터(my_counter)를 1씩 증가시킵니다.
순회가 끝나면 카운터 값을 함수의 결과로 반환합니다.
함수 외부에서 예시 리스트를 정의하고 콘솔에 출력합니다.
찾으려는 숫자(66)를 변수에 저장한 뒤, 리스트와 숫자를 인자로 전달하여 함수를 호출합니다.
format() 메서드를 활용해 "66 has occurred 2 times" 형태의 결과 문자열을 콘솔에 출력합니다.
더 간단한 방법: count() 메서드 활용하기
사실 파이썬 리스트에는 count() 메서드가 기본으로 내장되어 있어, 별도의 함수를 작성하지 않고도 한 줄로 동일한 결과를 얻을 수 있습니다.
my_list = [66, 26, 48, 140, 66, 20, 1, 96, 86] print(my_list.count(66)) # 출력: 2
직접 함수를 구현하면 조건을 추가하거나 로직을 자유롭게 확장할 수 있다는 장점이 있고, count() 메서드를 사용하면 코드가 훨씬 간결해진다는 장점이 있습니다. 상황에 맞게 선택해서 사용하면 됩니다.