Skip to Content
💻 코리아IT아카데미 신촌 - 프로그래밍 학습 자료
Python 프로그래밍Unit 4: 자료구조 마스터Topic 1: 리스트 기본

Topic 1: 리스트 기본 - 데이터 모음집 📋

🎯 학습 목표

리스트의 개념을 이해하고 리스트를 생성, 접근, 수정하는 기본적인 방법을 익혀 여러 데이터를 효율적으로 관리할 수 있습니다.

📋 리스트란?

일상생활의 목록

우리는 매일 다양한 목록을 만들고 사용합니다:

  • 장보기 목록: [“사과”, “바나나”, “우유”, “빵”]
  • 할 일 목록: [“숙제하기”, “운동하기”, “독서하기”]
  • 점수 목록: [90, 85, 92, 78, 96]

프로그래밍에서 리스트는 이런 목록을 표현하는 자료구조입니다.

리스트의 필요성

# 리스트 없이 학생 점수 관리한다면... student1_score = 90 student2_score = 85 student3_score = 92 student4_score = 78 student5_score = 96 # 학생이 많아질수록 변수도 많아져요...
# 리스트를 사용하면... scores = [90, 85, 92, 78, 96] # 하나의 변수로 모든 점수를 관리!

🏗️ 리스트 생성

기본 생성 방법

# 빈 리스트 생성 empty_list = [] # 숫자 리스트 numbers = [1, 2, 3, 4, 5] # 문자열 리스트 fruits = ["사과", "바나나", "오렌지"] # 혼합 리스트 mixed = [1, "안녕", 3.14, True]

다양한 생성 방법

# 반복된 값으로 리스트 생성 zeros = [0] * 5 # [0, 0, 0, 0, 0] hello = ["안녕"] * 3 # ["안녕", "안녕", "안녕"] # list() 함수 사용 - 다른 자료형을 리스트로 변환 numbers = list(range(1, 6)) # [1, 2, 3, 4, 5] letters = list("Hello") # ['H', 'e', 'l', 'l', 'o'] # 빈 리스트 생성하는 두 가지 방법 empty1 = [] empty2 = list() print(empty1) # [] print(empty2) # []

list() 함수 활용법:

  • list(): 빈 리스트 생성
  • list(range(5)): 0부터 4까지의 숫자 리스트
  • list("안녕"): 문자열의 각 글자를 요소로 하는 리스트

🔍 리스트 접근 - 인덱싱

인덱스의 개념

fruits = ["사과", "바나나", "오렌지", "포도"] # 0 1 2 3 (인덱스)

인덱스는 리스트에서 각 요소의 위치를 나타내는 번호입니다.

기본 인덱싱

fruits = ["사과", "바나나", "오렌지", "포도"] print(fruits[0]) # 사과 (첫 번째 요소) print(fruits[1]) # 바나나 (두 번째 요소) print(fruits[3]) # 포도 (네 번째 요소)

음수 인덱싱

fruits = ["사과", "바나나", "오렌지", "포도"] print(fruits[-1]) # 포도 (마지막 요소) print(fruits[-2]) # 오렌지 (뒤에서 두 번째) print(fruits[-4]) # 사과 (뒤에서 네 번째)

✂️ 리스트 슬라이싱

슬라이싱 기본 문법

리스트[시작:끝:간격]

기본 슬라이싱

numbers = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] print(numbers[2:5]) # [2, 3, 4] print(numbers[:3]) # [0, 1, 2] (처음부터 3번째까지) print(numbers[3:]) # [3, 4, 5, 6, 7, 8, 9] (3번째부터 끝까지) print(numbers[:]) # [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] (전체)

간격 지정 슬라이싱

numbers = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] print(numbers[::2]) # [0, 2, 4, 6, 8] (2씩 건너뛰기) print(numbers[1::2]) # [1, 3, 5, 7, 9] (1부터 2씩 건너뛰기) print(numbers[::-1]) # [9, 8, 7, 6, 5, 4, 3, 2, 1, 0] (역순)

🔄 리스트 수정

개별 요소 수정

fruits = ["사과", "바나나", "오렌지"] fruits[1] = "딸기" # 바나나를 딸기로 변경 print(fruits) # ["사과", "딸기", "오렌지"]

슬라이싱으로 여러 요소 수정

numbers = [1, 2, 3, 4, 5] numbers[1:3] = [10, 20] # 2, 3을 10, 20으로 변경 print(numbers) # [1, 10, 20, 4, 5]

📏 리스트 길이와 정보

len() 함수

fruits = ["사과", "바나나", "오렌지"] print(len(fruits)) # 3 scores = [90, 85, 92, 78, 96] print(f"학생 수: {len(scores)}명") # 학생 수: 5명

in 연산자

fruits = ["사과", "바나나", "오렌지"] print("사과" in fruits) # True print("포도" in fruits) # False print("키위" not in fruits) # True

🔢 리스트 기본 연산

리스트 더하기

fruits1 = ["사과", "바나나"] fruits2 = ["오렌지", "포도"] all_fruits = fruits1 + fruits2 print(all_fruits) # ["사과", "바나나", "오렌지", "포도"]

리스트 곱하기

numbers = [1, 2, 3] repeated = numbers * 3 print(repeated) # [1, 2, 3, 1, 2, 3, 1, 2, 3]

📊 실용적인 예시들

예시 1: 학생 점수 관리

# 학생 점수 리스트 scores = [85, 92, 78, 96, 88] # 점수 분석 total = sum(scores) average = total / len(scores) highest = max(scores) lowest = min(scores) print(f"전체 점수: {scores}") print(f"평균: {average:.1f}") print(f"최고점: {highest}") print(f"최저점: {lowest}")

예시 2: 쇼핑 목록 관리

# 쇼핑 목록 shopping_list = ["사과", "우유", "빵", "계란"] print("📋 쇼핑 목록:") print(f"1. {shopping_list[0]}") print(f"2. {shopping_list[1]}") print(f"3. {shopping_list[2]}") print(f"4. {shopping_list[3]}") # 목록 길이 확인 print(f"총 {len(shopping_list)}개 항목") # 특정 항목 확인 if "우유" in shopping_list: print("우유가 목록에 있습니다!")

🚨 자주 발생하는 오류

오류 1: 인덱스 범위 초과

# ❌ 틀린 예 fruits = ["사과", "바나나", "오렌지"] print(fruits[5]) # IndexError: list index out of range # ✅ 올바른 예 fruits = ["사과", "바나나", "오렌지"] if len(fruits) > 5: print(fruits[5]) else: print("인덱스가 범위를 벗어났습니다")

오류 2: 리스트와 문자열 혼동

# ❌ 헷갈리는 예 text = "Hello" print(text[0]) # 'H' (문자열도 인덱싱 가능) # ✅ 명확한 구분 text = "Hello" char_list = list(text) # ['H', 'e', 'l', 'l', 'o'] print(f"문자열: {text}") print(f"리스트: {char_list}")

💡 퀴즈: 리스트 기본 이해도 체크

Q1. 다음 코드의 출력 결과는?

numbers = [10, 20, 30, 40, 50] print(numbers[-2])
  1. 20
  2. 30
  3. 40
  4. 50

💡 정답 확인

정답: 3번 (40)

음수 인덱싱에서 -2는 뒤에서 두 번째 요소를 의미합니다.

Q2. 다음 코드의 출력 결과는?

fruits = ["사과", "바나나", "오렌지", "포도"] print(fruits[1:3])
  1. [“바나나”, “오렌지”]
  2. [“바나나”, “오렌지”, “포도”]
  3. [“사과”, “바나나”, “오렌지”]
  4. [“사과”, “바나나”]

💡 정답 확인

정답: 1번 ([“바나나”, “오렌지”])

슬라이싱에서 [1:3]은 인덱스 1부터 3 미만까지를 의미합니다.

Q3. 다음 코드의 출력 결과는?

numbers = [1, 2, 3] print(len(numbers))
  1. 1
  2. 2
  3. 3
  4. 오류 발생

💡 정답 확인

정답: 3번 (3)

len() 함수는 리스트의 길이(요소 개수)를 반환합니다.

✅ 리스트 기본 마스터 체크리스트

✅ 리스트 기본 마스터 체크리스트

🎉 리스트 기본 완성!

리스트의 기본 개념부터 인덱싱, 슬라이싱, 기본 연산까지 모두 학습했습니다!

🏆 이번 토픽에서 배운 내용

  1. 리스트 생성: 다양한 방법으로 리스트 만들기
  2. 인덱싱: 정확한 위치의 요소 접근하기
  3. 슬라이싱: 필요한 부분만 추출하기
  4. 수정: 리스트 요소 변경하기
  5. 기본 연산: 길이, 포함 여부, 연결 등

🚀 이제 할 수 있는 것들

  • 여러 데이터를 하나의 변수로 효율적으로 관리
  • 원하는 위치의 데이터에 정확하게 접근
  • 필요한 부분만 선택적으로 사용
  • 데이터 목록을 동적으로 관리

다음 토픽에서는 리스트 메서드와 활용을 배워서 리스트를 더욱 자유자재로 다루는 방법을 알아보겠습니다! 🚀

Last updated on