리스트로 데이터 모으기
여러 데이터를 한 번에! 리스트로 데이터 모으기
이제까지 변수/연산자/조건/반복/함수까지는 뭐… 대충 “뼈대”를 잡은 느낌이었죠.
솔직히 말하면, 여기서부터가 진짜 재밌는 구간이에요. 왜냐면 프로그램은 보통 “하나의 값”만 쓰는 게 아니라, 여러 개를 한꺼번에 모아서 처리하거든요.
그래서 오늘은 리스트(list) 로 데이터를 모으는 법을 배워볼게요.
나름 바이브 코딩스럽게, “일단 손으로 쳐보기” 중심으로 갑니다!
리스트가 왜 필요하냐? (한 줄 요약)
예를 들어 이런 상황이 있다고 해볼게요.
- 학생 점수가 여러 명치 있어요:
90, 85, 78, 92... - 해야 할 일이 여러 개 있어요:
공부하기, 운동하기, 밥먹기... - 장바구니에 담긴 물건이 여러 개 있어요
이걸 매번 변수로 다 만들면 너무 번거롭죠.
score1,score2,score3… 이렇게 가면- 나중에 추가/삭제/계산할 때 지옥문이 열려요… 어?
리스트는 이럴 때 여러 값을 하나의 묶음으로 관리해주는 자료구조예요.
그냥 “값들이 줄줄이 들어있는 상자”라고 생각하면 됩니다.
1) 리스트 만들기
파이썬 기준으로 리스트는 대괄호 [] 를 써요.
scores = [90, 85, 78, 92]
그리고 이렇게도 가능해요.
names = ["철수", "영희", "민수"]
리스트 안에는 숫자도 넣고, 문자도 넣고, 심지어 섞어서 넣을 수도 있어요.
items = ["사과", 12000, "바나나", 8000]
물론 나중에 헷갈리니까… 나름 보기 좋게 유지하는 게 좋아요. (사실 나는 가끔 섞다가 망했어…)
2) 리스트 값 꺼내기 (인덱스)
리스트는 순서가 있는 데이터예요. 그래서 위치를 숫자로 찍을 수 있죠.
- 첫 번째는
0 - 두 번째는
1 - 세 번째는
2…
scores = [90, 85, 78, 92]
print(scores[0]) # 90
print(scores[2]) # 78
여기서 내가 한 번… 실수했던 얘기 하나.
리스트 인덱스를 1부터 시작하는 줄 알고 막 썼는데, 결과가 이상하게 나와서 “어? 내 코드가 이상한가?” 하고 한참 봤거든요.
근데 알고 보니 scores[1]이 두 번째 값이었어… 음… 사람은 자주 틀리더라. (나만 그런 거 아니죠?)
3) 리스트에 값 추가하기 (append)
리스트는 만들고 끝이 아니에요. 추가도 해야죠.
가장 흔한 건 append()예요.
scores = [90, 85, 78, 92]
scores.append(88)
print(scores) # [90, 85, 78, 92, 88]
“리스트에 뒤에 하나 더 얹는다” 느낌!
4) 리스트 수정하기 (특정 인덱스 변경)
특정 위치 값도 바꿀 수 있어요.
scores = [90, 85, 78, 92]
scores[1] = 86
print(scores) # [90, 86, 78, 92]
여기서도 인덱스만 정확히 알면 됩니다.
음… 또 헷갈리면? 그럼 출력 찍어보면 돼요. 난 이렇게 살아남았어요.
5) 리스트에서 값 제거하기
제거도 해볼게요. 방법이 몇 가지 있는데, 대표로 두 개만 잡겠습니다.
5-1) remove()로 값 지우기
scores = [90, 85, 78, 92]
scores.remove(85)
print(scores) # [90, 78, 92]
85가 리스트에 없으면 에러가 나요.
그래서 “혹시 없을 수도 있나?” 싶으면 조건문이랑 같이 쓰는 게 안전해요. (솔직히 나도 종종 없어서 터짐…!)
5-2) pop()으로 위치 지우기 + 꺼내기
scores = [90, 85, 78, 92]
value = scores.pop(2) # 2번째(인덱스 2) 값 꺼내기
print(value) # 78
print(scores) # [90, 85, 92]
pop()은 “지워서 값도 가져가요”라서 자주 써요.
6) for문으로 리스트 돌려보기 (진짜 중요)
이제 진짜 실용 구간.
리스트는 보통 이렇게 씁니다:
- 리스트 만들고
for로 쭉 돌면서 처리하고
scores = [90, 85, 78, 92]
for s in scores:
print(s)
그리고 “모두 더하기” 같은 것도 가능하죠.
scores = [90, 85, 78, 92]
total = 0
for s in scores:
total += s
print(total)
아! 그리고 여기서 평균도 바로 만들 수 있어요. 나름 귀엽게 가보자면…
scores = [90, 85, 78, 92]
total = sum(scores)
avg = total / len(scores)
print(avg)
sum(scores): 합len(scores): 개수
사실 이런 내장함수는 “마법 버튼” 같아서 좋아요.
난 처음에 sum 몰랐을 때 진짜 손으로 다 짰거든요. 시간이 아까웠지…ㅎㅎ
미니 실습: 리스트로 점수 처리하기
이제 바로 해봐요. 내가 “친구”라고 생각하고 옆에서 같이 하는 느낌으로 진행할게요.
목표
- 사용자 입력으로 점수를 여러 개 받기 (예: 4개)
- 리스트에 저장
- 합계랑 평균 출력
예시로 이렇게 해보면 됩니다.
scores = []
for i in range(4):
x = int(input(f"{i+1}번째 점수를 입력하세요: "))
scores.append(x)
total = sum(scores)
avg = total / len(scores)
print("점수 목록:", scores)
print("합계:", total)
print("평균:", avg)
여기서 중요한 건,
scores = []로 리스트를 만든 다음append()로 계속 넣고- 마지막에
sum()과len()으로 처리한다는 흐름이에요.
어? 이렇게 하니까 뭔가 “프로그램이 제대로 된 느낌” 나지 않나요?
여기서 잠깐! 리스트는 “순서 있는 값 묶음”
정리해보면 리스트는 이런 성격이에요.
- 값이 여러 개
- 순서가 있다
- 인덱스로 접근한다
- 추가/수정/삭제가 가능하다
근데… 여기서 한 가지가 걸리죠.
“학생 정보가 여러 명인데, 각 학생이 이름/나이/점수까지 다 갖고 있으면 어떻게 하지?”
리스트만으로도 하긴 해요. 하지만 나중에 구조가 꼬이기 시작합니다.
그래서 다음 글에서는 딕셔너리로 정보 관리하기로 넘어갈 거예요.
딕셔너리는 “이름이 붙은 키(key)로 정보”를 다루는 방식이라,
학생 한 명의 정보를 훨씬 깔끔하게 저장할 수 있거든요. 오? 벌써 기대되지 않나요?
다음 편 예고
다음은 3-2. 딕셔너리로 정보 관리하기 입니다.
- 리스트는 “줄 세우는 방식” 느낌이라면
- 딕셔너리는 “이름표 달아두는 방식” 느낌이에요
그럼 우리 다음 편에서 “학생 정보” 같은 걸 진짜 깔끔하게 만들어봅시다!





