바이브코더를 위한 파이썬 기초 5편: 리스트와 0부터 세는 인덱스
파이썬 리스트를 만들고 꺼내고 추가하고 훑는 법. 인덱스가 0부터인 이유, -1로 마지막 항목 꺼내기, IndexError가 나는 경우와 바이브코딩에서 주의할 점을 정리했다.
AI에게 "엑셀 파일에서 이름만 뽑아 줘"라고 하면 결과를 리스트로 받는 경우가 많다. 리스트는 여러 값을 순서대로 담는 묶음이고, 파이썬에서 가장 많이 쓰는 자료형 중 하나다. 이 글은 '바이브코더를 위한 파이썬 기초' 10편 중 5편으로, 리스트를 만들고 꺼내고 추가하고 반복문으로 훑는 법, 그리고 IndexError가 나는 이유를 다룬다. 예제는 Python 3.15 기준으로 설명하며 Python 3.14.2에서 실행해 결과를 확인했다.
핵심 요약
- 리스트는 대괄호
[]안에 값을 쉼표로 나열한 순서 있는 묶음이다.- 인덱스(자리 번호)는 0부터 시작한다.
-1은 마지막 항목이다.- 항목이 3개면 쓸 수 있는 인덱스는 0, 1, 2뿐이다.
[3]은IndexError가 난다.append로 끝에 추가하고,len으로 개수를 세고,for로 하나씩 꺼낸다.
리스트는 번호 붙은 사물함 줄이다
장바구니 목록을 생각해 보자. 위에서부터 순서가 있고, 물건을 추가하거나 뺄 수 있다. 리스트도 같다.
번호가 붙은 사물함이 한 줄로 늘어선 모습으로 떠올리면 편하다. 다만 한 가지가 다르다. 첫 사물함 번호가 1이 아니라 0이다. 이 한 가지 때문에 생기는 리스트 실수가 많다.
만들기, 꺼내기, 추가하기, 훑기
fruits = ["사과", "배", "포도"]
print(fruits[0], fruits[-1])
fruits.append("귤")
print(len(fruits))
for f in fruits:
print(f)
print(fruits[1:3])
사과 포도
4
사과
배
포도
귤
['배', '포도']
| 코드 | 뜻 |
|---|---|
fruits[0] | 첫 번째 항목 |
fruits[-1] | 마지막 항목(뒤에서 첫 번째) |
fruits.append("귤") | 맨 끝에 항목 추가 |
len(fruits) | 항목 개수 |
for f in fruits: | 항목을 하나씩 f에 붙여 반복(4편) |
fruits[1:3] | 1번 자리부터 3번 자리 앞까지 잘라 내기 |
fruits[1:3]이 ['배', '포도']인 이유는 4편의 range와 같다. 끝 번호는 포함하지 않는다. 파이썬은 "시작은 포함, 끝은 제외" 규칙을 여러 곳에서 똑같이 쓴다.
흔한 함정: 마지막 항목은 fruits[len(fruits)]일까
항목이 3개니 fruits[3]이 마지막일 것 같지만 아니다.
fruits = ["사과", "배", "포도"]
try:
print(fruits[3])
except IndexError as e:
print(e)
list index out of range
(try / except는 오류를 잡아 메시지만 보여 주는 문법으로, 8편에서 자세히 다룬다.)
항목이 3개면 인덱스는 0, 1, 2뿐이다. list index out of range는 "그 번호의 사물함은 없다"는 뜻이다. 마지막 항목은 fruits[-1] 또는 fruits[len(fruits) - 1]로 꺼낸다.
바이브코딩에서 리스트를 만나는 곳
- 파일 목록, 엑셀의 한 열, 웹에서 가져온 검색 결과는 리스트로 다루는 경우가 많다.
- 화면에는 "1번, 2번…"으로 보여 주면서 코드 안에서는 0부터 센다. 사람용 번호와 리스트 인덱스가 1만큼 차이 나는 곳에서 버그가 잘 생긴다. 10편의 할 일 목록에서 이 차이를 직접 다룬다.
- 목록이 비어 있을 때
[0]이나[-1]을 쓰면IndexError가 난다. 검색 결과가 0건일 수 있는 코드라면 AI에게 "결과가 비어 있으면 어떻게 되는지 처리해 줘"라고 요청한다.
IndexError가 나면 오류가 난 줄에서 리스트의 길이(len)와 쓰려던 인덱스를 함께 출력해 보자. 원인이 바로 보인다.
스스로 확인하기
nums = [10, 20, 30]에서nums[-1]은? → 30. 음수 인덱스는 뒤에서부터 센다.len(nums)가 3일 때nums[3]은? →IndexError. 인덱스 3은 네 번째 항목인데, 없다.
직접 해 보기
좋아하는 영화 5개로 리스트를 만들고, 하나를 추가한 뒤 모두 출력해 보자. 6개가 출력되면 성공이다. 막히면 append의 괄호와 따옴표를 확인한다.
movies = ["기생충", "올드보이", "인터스텔라", "토이 스토리", "인사이드 아웃"]
movies.append("라라랜드")
print(len(movies))
for m in movies:
print(m)
6
기생충
올드보이
인터스텔라
토이 스토리
인사이드 아웃
라라랜드
이전 편과 다음 편
- 이전 글: 4편: 반복문 for·while과 range의 함정
- 다음 글: 6편: 딕셔너리에서는 번호 대신 이름으로 값을 찾는 딕셔너리와, AI 코드에서 자주 보는
KeyError를 다룬다.
시리즈 전체 목록은 10편 끝에 모아 두었다.