04 — LECTURE ·PY-07 ·2026.02.09

07. 리스트

리스트 생성부터 메서드와 2차원 구조까지 다룬다

목차
  1. 학습 목표
  2. 1. 리스트란?
  3. 정의
  4. 생성 방법
  5. 실습 7-1. 리스트 생성과 인덱싱/슬라이싱
  6. 2. 리스트 요소 추가
  7. 주요 메서드
  8. 실습 7-2. 요소 추가
  9. 3. 리스트 요소 삭제
  10. 주요 메서드
  11. 실습 7-3. 요소 삭제
  12. 4. 리스트 정렬 & 기타
  13. 정렬
  14. 실습 7-4. 정렬
  15. 5. for문에서 리스트 활용
  16. 기본 구조
  17. 실습 7-5. 리스트 순회
  18. 실습 7-6. 리스트로 합계와 평균 구하기 (스포츠)
  19. 실습 7-7. while문에서 리스트 활용
  20. 6. 2차원 리스트
  21. 정의
  22. 구조
  23. 실습 7-8. 2차원 리스트 기본
  24. 실습 7-9. 학생 3과목 성적 합계·평균 (2차원 리스트)
  25. 리스트 주요 메서드 정리

스포츠 데이터로 배우는 파이썬 기초

학습 목표

  • 리스트의 생성, 인덱싱, 슬라이싱
  • 요소 추가(.append, .insert) 및 삭제(.remove, .pop)
  • 리스트 정렬(.sort)
  • for문에서 리스트 순회
  • 2차원 리스트 구조 이해

1. 리스트란?

정의

  • 여러 데이터를 순서대로 담는 자료구조
  • 대괄호 [] 사용
  • 서로 다른 타입의 데이터도 함께 저장 가능
  • 인덱스 0번부터 시작

생성 방법

리스트명 = [값1, 값2, 값3, ...]

실습 7-1. 리스트 생성과 인덱싱/슬라이싱

fruits = ['사과', '오렌지', '딸기', '포도', '감', '키위', '멜론', '수박']

print(fruits)
print(fruits[0])        # 첫 번째 요소
print(fruits[1:4])      # 1~3번 요소
print(fruits[2:])       # 2번부터 끝까지
print(fruits[-1])       # 마지막 요소
print(fruits[-3:])      # 뒤에서 3개
['사과', '오렌지', '딸기', '포도', '감', '키위', '멜론', '수박']
사과
['오렌지', '딸기', '포도']
['딸기', '포도', '감', '키위', '멜론', '수박']
수박
['키위', '멜론', '수박']
# 다양한 타입을 담은 리스트
list1 = [5, 10.2, '탁구', True, [4, 5, 6]]
print(list1)

# range()로 리스트 생성
numbers = list(range(1, 10, 2))
print(numbers)
[5, 10.2, '탁구', True, [4, 5, 6]]
[1, 3, 5, 7, 9]

2. 리스트 요소 추가

주요 메서드

메서드기능예시
.append(값)끝에 추가a.append('x')
.insert(위치, 값)원하는 위치에 삽입a.insert(1, 'x')
.extend(리스트)다른 리스트 합치기a.extend(b)
+두 리스트 연결a + b

실습 7-2. 요소 추가

a = ['red', 'green', 'blue']

a.append('yellow')
print('append:', a)

a.insert(1, 'black')
print('insert:', a)

b = ['purple', 'white']
a.extend(b)
print('extend:', a)
append: ['red', 'green', 'blue', 'yellow']
insert: ['red', 'black', 'green', 'blue', 'yellow']
extend: ['red', 'black', 'green', 'blue', 'yellow', 'purple', 'white']

3. 리스트 요소 삭제

주요 메서드

메서드기능비고
.remove(값)해당 삭제첫 번째 일치 항목만
.pop(인덱스)해당 위치 삭제 후 반환del a[인덱스] 와 유사
.clear()모든 요소 삭제빈 리스트 됨
.index(값)값의 위치(인덱스) 반환삭제 전 위치 확인용

실습 7-3. 요소 삭제

a = [10, 20, 30, 40, 50, 60, 70, 80, 90, 100]

x = a.index(30)
print('30의 인덱스:', x)

a.pop(x)
print('pop 후:', a)

a.remove(90)
print('remove 후:', a)

a.clear()
print('clear 후:', a)
30의 인덱스: 2
pop 후: [10, 20, 40, 50, 60, 70, 80, 90, 100]
remove 후: [10, 20, 40, 50, 60, 70, 80, 100]
clear 후: []

4. 리스트 정렬 & 기타

정렬

메서드기능
.sort()오름차순 (원본 변경)
.sort(reverse=True)내림차순
.count(값)특정 값의 등장 횟수

실습 7-4. 정렬

scores = [-7, 1, 5, 8, 3, 9, 11, 13]

scores.sort()
print('오름차순:', scores)

scores.sort(reverse=True)
print('내림차순:', scores)
오름차순: [-7, 1, 3, 5, 8, 9, 11, 13]
내림차순: [13, 11, 9, 8, 5, 3, 1, -7]
# count
list1 = ['a', 'bb', 'c', 'd', 'aaa', 'c', 'ddd', 'aaa', 'b', 'cc', 'd', 'aaa']
print("'aaa' 개수:", list1.count('aaa'))
'aaa' 개수: 3

5. for문에서 리스트 활용

기본 구조

for 변수 in 리스트:
    변수를 활용한 코드

실습 7-5. 리스트 순회

fruits = ['apple', 'orange', 'banana']
for fruit in fruits:
    print(fruit)
apple
orange
banana

실습 7-6. 리스트로 합계와 평균 구하기 (스포츠)

# 선수 경기 점수
scores = [88, 75, 90, 95, 77, 69, 80, 92]
total = 0

for score in scores:
    total += score

avg = total / len(scores)
print('총점: %d, 평균: %.2f' % (total, avg))
총점: 666, 평균: 83.25

실습 7-7. while문에서 리스트 활용

animals = ['토끼', '거북이', '사자', '호랑이']
i = 0
while i < len(animals):
    print(animals[i])
    i += 1
토끼
거북이
사자
호랑이

6. 2차원 리스트

정의

  • 리스트 안에 리스트 → 행과 열 구조
  • 리스트[행][열] 로 접근

구조

numbers = [[10, 20, 30],   # 행 0
           [40, 50, 60]]   # 행 1
numbers[0][2]  → 30
numbers[1][0]  → 40

실습 7-8. 2차원 리스트 기본

numbers = [[10, 20, 30], [40, 50, 60]]

print(numbers[0])       # [10, 20, 30]
print(numbers[1])       # [40, 50, 60]
print(numbers[0][0])    # 10
print(numbers[1][2])    # 60
[10, 20, 30]
[40, 50, 60]
10
60

실습 7-9. 학생 3과목 성적 합계·평균 (2차원 리스트)

scores = [
    [96, 84, 80], [96, 86, 76],
    [76, 95, 83], [89, 96, 69],
    [90, 76, 91], [82, 66, 88],
    [83, 86, 79], [85, 90, 83]
]

for i in range(len(scores)):
    total = 0
    for j in range(len(scores[i])):
        total += scores[i][j]
    avg = total / len(scores[i])
    print('%d번째 학생 합계: %d, 평균: %.2f' % (i + 1, total, avg))
1번째 학생 합계: 260, 평균: 86.67
2번째 학생 합계: 258, 평균: 86.00
3번째 학생 합계: 254, 평균: 84.67
4번째 학생 합계: 254, 평균: 84.67
5번째 학생 합계: 257, 평균: 85.67
6번째 학생 합계: 236, 평균: 78.67
7번째 학생 합계: 248, 평균: 82.67
8번째 학생 합계: 258, 평균: 86.00

리스트 주요 메서드 정리

메서드기능
.append(값)끝에 추가
.insert(위치, 값)특정 위치에 삽입
.extend(리스트)다른 리스트 합치기
.remove(값)값으로 삭제
.pop(인덱스)위치로 삭제
.index(값)값의 위치 반환
.count(값)등장 횟수
.sort()정렬
.clear()전체 삭제
len(리스트)길이(개수)