본문 바로가기
코딩교육/Python 초등교육에서 전문가까지

2단계 : 5. 리스트와 반복문 (리스트의 기본 개념과 생성)

by 제리토리 2025. 3. 22.
728x90
반응형

1. 리스트(List)란?

 

Python에서 리스트(List)는 여러 개의 데이터를 순차적으로 저장할 수 있는 데이터 구조입니다.

리스트는 다양한 데이터 타입을 포함할 수 있으며, 인덱스를 사용하여 요소를 접근하고 조작할 수 있습니다.

 

리스트의 주요 특징

  • 순서가 있는(Ordered) 데이터 구조

  • 다양한 데이터 타입을 저장 가능

  • 변경 가능(Mutable) → 요소 추가, 수정, 삭제 가능

  • 반복문을 활용한 데이터 조작 가능

 

 

 

2. 리스트 생성 방법

 

리스트는 대괄호 []를 사용하여 생성합니다.

 

㉮ 기본적인 리스트 생성

numbers = [1, 2, 3, 4, 5]
fruits = ["사과", "바나나", "체리"]
mixed_list = [10, "Python", 3.14, True]  # 다양한 데이터 타입 포함 가능

 

각 요소는 쉼표(,)로 구분되며, 문자열, 숫자, 불리언 등 여러 데이터 타입을 포함할 수 있음.

 

 

 

3. 리스트의 인덱싱과 슬라이싱

 

㉮ 인덱싱 (indexing)

 

인덱싱을 사용하면 리스트의 특정 요소를 가져올 수 있습니다.

Python의 인덱스는 0부터 시작하며, 음수 인덱스를 사용하면 뒤에서부터 요소에 접근할 수 있습니다.

fruits = ["사과", "바나나", "체리"]

print(fruits[0])   # 첫 번째 요소: 사과
print(fruits[-1])  # 마지막 요소: 체리

 

출력결과

사과
체리

 

양수 인덱스는 앞에서부터 접근, 음수 인덱스는 뒤에서부터 접근.

 

 

㉯ 슬라이싱(Slicing)

 

슬라이싱을 사용하면 리스트에서 특정 범위의 요소를 추출할 수 있습니다.

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

print(numbers[1:4])   # 1번 인덱스부터 3번 인덱스까지 추출
print(numbers[:3])    # 처음부터 3번 인덱스까지 추출
print(numbers[2:])    # 2번 인덱스부터 끝까지 추출
print(numbers[::-1])  # 리스트를 역순으로 출력

 

출력결과

[20, 30, 40]
[10, 20, 30]
[30, 40, 50]
[50, 40, 30, 20, 10]

 

슬라이싱을 활용하면 특정 부분을 쉽게 추출하거나, 리스트를 뒤집을 수 있음.

 

 

4. 빈 리스트 생성 및 요소 추가

 

㉮ 빈 리스트 생성

 

빈 리스트를 만들고 데이터를 동적으로 추가할 수도 있습니다.

empty_list = []  # 빈 리스트 생성
empty_list2 = list()  # list() 함수 사용

 

 

㉯ 리스트에 요소 추가 (append(), insert())

 

Python에서는 append()insert() 메서드를 사용하여 리스트에 요소를 추가할 수 있습니다.

 

  (1) append() - 리스트 끝에 요소 추가

numbers = [1, 2, 3]
numbers.append(4)

print(numbers)  # [1, 2, 3, 4]

 

 

  ✅ 항상 리스트의 끝에 새로운 요소가 추가됨.

 

  (2) insert() - 특정 위치에 요소 추가

numbers.insert(1, 100)  # 인덱스 1 위치에 100 추가

print(numbers)  # [1, 100, 2, 3, 4]

 

  ✅ 리스트의 특정 위치에 요소를 삽입할 때 사용.

 

 

5 리스트 연산

 

㉮ 리스트 연결 (+)

 

리스트를 연결할 때 + 연산자를 사용할 수 있습니다.

list1 = [1, 2, 3]
list2 = [4, 5, 6]

merged_list = list1 + list2
print(merged_list)  # [1, 2, 3, 4, 5, 6]

 

  ✅ 기존 리스트를 변경하지 않고 새로운 리스트를 생성.

 

 

㉯ 리스트 반복 (*)

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

 

  ✅ 리스트를 여러 번 반복하여 새로운 리스트를 생성.

 

 

6. 리스트 길이 확인 (len())

 

리스트의 요소 개수를 확인하려면 len() 함수를 사용합니다.

fruits = ["사과", "바나나", "체리"]
print(len(fruits))  # 3

 

 

  ✅ 리스트의 길이를 알고 싶을 때 유용함.

 

 

7. 리스트 요소 수정 및 삭제

 

㉮ 요소 수정

fruits = ["사과", "바나나", "체리"]
fruits[1] = "오렌지"  # 바나나 → 오렌지로 변경

print(fruits)  # ['사과', '오렌지', '체리']

 

  ✅ 리스트는 변경 가능한(mutable) 자료형이므로 요소를 수정할 수 있음.

 

 

㉯ 요소 삭제 (remove(), pop(), del)

 

  (1) remove() - 특정 값을 찾아 삭제

numbers = [10, 20, 30, 40]
numbers.remove(20)  # 값 20을 찾아 삭제

print(numbers)  # [10, 30, 40]

 

  ✅ 첫 번째로 일치하는 값만 삭제.

 

  (2) pop() - 특정 인덱스의 요소를 삭제하고 반환

numbers = [10, 20, 30, 40]
deleted_value = numbers.pop(1)  # 인덱스 1의 요소 삭제

print(numbers)  # [10, 30, 40]
print(deleted_value)  # 20

 

  ✅ 삭제된 값을 반환할 수 있어 유용함.

 

  (3) del - 특정 인덱스의 요소 삭제

numbers = [10, 20, 30, 40]
del numbers[2]  # 인덱스 2의 요소 삭제

print(numbers)  # [10, 20, 40]

 

  ✅ del 키워드를 사용하면 특정 요소를 삭제할 수 있음.

 

 

 

8. 리스트 복사 (copy())

 

리스트를 복사할 때 단순 대입(=)을 사용하면 원본과 동일한 객체를 참조하게 됩니다.

따라서, 별도의 리스트로 복사하려면 copy()를 사용해야 합니다.

original = [1, 2, 3]
copy_list = original.copy()

copy_list.append(4)

print(original)  # [1, 2, 3]
print(copy_list) # [1, 2, 3, 4]

 

  ✅ 원본 리스트를 변경하지 않고 새로운 리스트를 생성.

 

 

 

9. 요약

 

  • 리스트(List)는 순서가 있는 변경 가능한 데이터 구조.

  • 인덱싱과 슬라이싱을 사용하여 요소를 조회하거나 수정 가능.

  • append(), insert()를 사용하여 요소를 추가 가능.

  • remove(), pop(), del을 사용하여 요소를 삭제 가능.

  • 리스트는 +, * 연산자를 사용하여 확장 가능.

  • 리스트 복사는 copy()를 사용해야 원본과 독립적인 새로운 리스트를 생성 가능.

 

 

728x90
반응형