파이썬의 count()와 index() 메서드는 리스트, 튜플, 문자열과 같은 시퀀스(sequence) 자료형에서 특정 요소를 다룰 때 매우 유용한 내장 함수입니다.
count() 메서드
count() 메서드는 시퀀스 내에서 특정 요소가 몇 번 나타나는지 그 횟수를 반환합니다.
기본 문법
sequence.count(value)
- sequence: 리스트, 튜플, 문자열 등
- value: 찾고자 하는 요소
예제
1. 리스트(List)에서 사용하기
my_list = ['사과', '바나나', '딸기', '사과', '바나나', '사과']
사과_개수 = my_list.count('사과')
print(f"사과의 개수: {사과_개수}") # 출력: 사과의 개수: 3
바나나_개수 = my_list.count('바나나')
print(f"바나나의 개수: {바나나_개수}") # 출력: 바나나의 개수: 2
오렌지_개수 = my_list.count('오렌지')
print(f"오렌지의 개수: {오렌지_개수}") # 출력: 오렌지의 개수: 0
'사과'가 3번, '바나나'가 2번 나타나고, '오렌지'는 없으므로 0을 반환합니다.
2. 문자열(String)에서 사용하기
my_string = "Hello, world! Hello, python!"
hello_개수 = my_string.count('Hello')
print(f"Hello의 개수: {hello_개수}") # 출력: Hello의 개수: 2
l_개수 = my_string.count('l')
print(f"l의 개수: {l_개수}") # 출력: l의 개수: 3
문자열에서도 마찬가지로 특정 부분 문자열이나 문자가 나타나는 횟수를 세어줍니다.

이미지는 과일 리스트에서 'apple'이 몇 개 있는지 세는 과정을 보여줍니다. count('apple')을 실행하면 리스트를 확인하여 'apple'이 2개 있다는 결과를 반환합니다.
index() 메서드
index() 메서드는 시퀀스 내에서 특정 요소가 처음으로 나타나는 위치(인덱스)를 반환합니다. 인덱스는 0부터 시작합니다. 만약 찾는 요소가 없을 경우 ValueError를 발생시킵니다.
기본 문법
sequence.index(value, [start, [end]])
- sequence: 리스트, 튜플, 문자열 등
- value: 찾고자 하는 요소
- start (선택적): 검색을 시작할 인덱스
- end (선택적): 검색을 끝낼 인덱스
예제
1. 리스트(List)에서 사용하기
my_list = ['사과', '바나나', '딸기', '사과', '바나나', '사과']
사과_인덱스 = my_list.index('사과')
print(f"첫 번째 사과의 인덱스: {사과_인덱스}") # 출력: 첫 번째 사과의 인덱스: 0
바나나_인덱스 = my_list.index('바나나')
print(f"첫 번째 바나나의 인덱스: {바나나_인덱스}") # 출력: 첫 번째 바나나의 인덱스: 1
'사과'는 여러 개 있지만, index()는 가장 먼저 나오는 '사과'의 인덱스인 0을 반환합니다.
2. 시작/끝 인덱스를 지정하여 사용하기
my_list = ['사과', '바나나', '딸기', '사과', '바나나', '사과']
두_번째_사과_인덱스 = my_list.index('사과', 1)
print(f"두 번째 사과의 인덱스: {두_번째_사과_인덱스}") # 출력: 두 번째 사과의 인덱스: 3
index('사과', 1)는 인덱스 1부터 검색을 시작하여 두 번째 '사과'의 위치인 3을 찾습니다.
3. 찾는 요소가 없을 경우
my_list = ['사과', '바나나', '딸기']
try:
my_list.index('오렌지')
except ValueError as e:
print(f"오류 발생: {e}") # 출력: 오류 발생: '오렌지' is not in list
'오렌지'가 리스트에 없기 때문에 ValueError가 발생합니다.
📝 요약 정리
| 메서드 | 역할 | 반환 값 | 에러 발생 |
| count() | 특정 요소의 개수를 셉니다. | 정수 (0 이상) | 없음 |
| index() | 특정 요소의 첫 번째 인덱스를 찾습니다. | 정수 (0 이상) | 찾는 요소가 없으면 ValueError 발생 |
추가질문)
index메서드에서 시작할 인덱스값만 주고 end값을 안주면 끝까지 찾게 되나요?
네, 맞습니다. index() 메서드에 시작 인덱스(start)만 지정하고 끝 인덱스(end)를 지정하지 않으면, 파이썬은 지정된 시작 인덱스부터 시퀀스의 끝까지 요소를 찾게 됩니다.
예를 들어, my_list.index('값', 5)와 같이 사용하면, 리스트의 인덱스 5부터 마지막 요소까지 '값'을 찾습니다. 만약 찾는 값이 없다면 ValueError를 발생시킵니다.
my_list = ['a', 'b', 'c', 'd', 'e', 'f', 'g']
# 인덱스 3부터 'g'를 찾습니다.
# 'd'(인덱스 3)부터 'e', 'f', 'g' 순서로 탐색합니다.
index_of_g = my_list.index('g', 3)
print(f"인덱스 3부터 찾은 'g'의 인덱스: {index_of_g}") # 출력: 인덱스 3부터 찾은 'g'의 인덱스: 6
# 인덱스 3부터 'a'를 찾습니다.
# 하지만 'a'는 이미 인덱스 0에 있으므로, 이 범위에는 없습니다.
try:
my_list.index('a', 3)
except ValueError as e:
print(f"오류 발생: {e}") # 출력: 오류 발생: 'a' is not in list

이미지는 ['apple', 'banana', 'orange', 'apple'] 리스트에서 **index('apple')**을 실행했을 때, 가장 처음 나타나는 'apple'의 위치(인덱스)인 0을 명확하게 보여줍니다.
참고)
in 메서드는 존재 여부를 확인하는 데 주로 사용되며, index() 메서드와 함께 사용하면 특정 요소의 존재 여부를 먼저 확인한 후 인덱스를 찾는 방식으로 오류를 방지할 수 있습니다.
in 메서드와 index() 메서드 함께 사용하기
index() 메서드는 찾는 값이 없을 경우 ValueError를 발생시키므로, 프로그램이 멈추지 않도록 예외 처리가 필요합니다. 이때 in 키워드를 사용하여 먼저 값이 존재하는지 확인하면 더 안전한 코드를 작성할 수 있습니다.
예제
in 키워드로 값의 존재 여부를 확인한 후 index()를 실행하는 예제입니다.
my_list = ['사과', '바나나', '딸기']
item = '바나나'
# '바나나'가 리스트에 있는지 먼저 확인
if item in my_list:
# 존재하므로 안전하게 index() 메서드 호출
index = my_list.index(item)
print(f"'{item}'의 인덱스: {index}")
else:
# 존재하지 않으므로 에러가 발생하지 않음
print(f"'{item}'는 리스트에 없습니다.")
# '오렌지'가 리스트에 있는지 확인
item = '오렌지'
if item in my_list:
index = my_list.index(item)
print(f"'{item}'의 인덱스: {index}")
else:
print(f"'{item}'는 리스트에 없습니다.")
이 코드를 실행하면 '바나나'의 인덱스는 정상적으로 출력되지만, 리스트에 없는 '오렌지'를 찾을 때는 ValueError 대신 "오렌지'는 리스트에 없습니다."라는 메시지가 출력되어 프로그램이 안정적으로 동작하게 됩니다.
in 메서드와 count() 메서드 함께 사용하기
in 키워드는 count() 메서드와 직접적으로 함께 사용하기보다는, count()가 0보다 큰지 확인하는 것과 같은 역할을 한다고 볼 수 있습니다.
if '값' in 리스트: 와 if 리스트.count('값') > 0: 는 모두 특정 값이 리스트에 있는지 여부를 확인하는 데 사용될 수 있습니다. 일반적으로 in 키워드가 더 직관적이고 성능 면에서도 효율적입니다.
예제
my_list = ['사과', '바나나', '딸기', '사과']
# '사과'가 리스트에 있는지 확인 (in 사용)
if '사과' in my_list:
print("사과가 리스트에 있습니다.")
# '사과'의 개수가 0보다 큰지 확인 (count() 사용)
if my_list.count('사과') > 0:
print("사과가 리스트에 있습니다.")
# '오렌지'가 리스트에 있는지 확인 (in 사용)
if '오렌지' not in my_list:
print("오렌지는 리스트에 없습니다.")
두 방식 모두 같은 결과를 출력하지만, in 키워드를 사용하는 것이 더 간결하고 파이썬스러운 방법으로 권장됩니다. count()는 특정 값의 개수를 셀 때 주로 사용하며, 단순히 존재 여부만 확인할 때는 in을 사용하는 것이 좋습니다.
'파이썬(Python)' 카테고리의 다른 글
| 컬렉션 자료형(Collection Data Types)에 대해서 간단히 정리 (8) | 2025.08.14 |
|---|---|
| 파이썬에서 점(.)의 의미를 정리(기초 개념 중요) (7) | 2025.08.14 |
| 파이썬, pop(), remove() 메서드에 대해 예제와 설명 (1) | 2025.08.14 |
| Python의 리스트(list)에서 sort() 메서드, reverse 매개변수에 대해 설명 (4) | 2025.08.13 |
| Python 리스트의 append()와 insert() 메서드에 대해 설명 (1) | 2025.08.13 |
콘텐츠 내 자동삽입광고
