지난 시간에는 파이썬에서 변수 하나에 단 하나의 값(숫자나 문자열)을 담는 방법을 다뤘습니다. 하지만 실제로 코딩을 하다 보면 다뤄야 할 데이터가 수십 개, 수백 개로 늘어나게 됩니다. 예를 들어 학생 10명의 성적을 관리해야 하는데 score1, score2, score3처럼 변수를 10개씩 만들어 관리하는 것은 매우 비효율적입니다.

이럴 때 수많은 데이터를 하나의 상자에 순서대로 담아 관리할 수 있게 해주는 자료구조가 바로 리스트(List)입니다.

저 역시 처음 코딩을 배울 때 변수를 수십 개씩 나열하다가 코드가 엉망이 되었던 경험이 있습니다. 리스트의 개념을 이해하고 나서는 비로소 데이터를 '집합' 단위로 깔끔하게 다룰 수 있게 되었습니다. 오늘은 비전공자가 파이썬 리스트를 만들고, 데이터를 자유자재로 추가·수정·삭제하는 핵심 테크닉을 정리해 드립니다.

1. 리스트란 무엇인가? (대괄호 [ ]의 역할)

파이썬에서 리스트는 여러 개의 데이터를 대괄호 [ ]로 감싸고, 각각의 값을 쉼표(,)로 구분하여 만듭니다.

Python
fruits = ["사과", "바나나", "체리"]
numbers = [1, 2, 3, 4, 5]
mixed = ["파이썬", 100, True]

리스트의 가장 큰 특징은 다양한 타입의 데이터를 한 공간에 섞어서 담을 수 있고, 담긴 데이터의 순서가 유지된다는 점입니다.

문자열과 마찬가지로 리스트 내부의 개별 데이터에 접근할 때는 인덱스(Index)를 사용합니다. 첫 번째 데이터인 "사과"를 가져오고 싶다면 fruits[0]을 입력하면 됩니다. 순서가 1이 아닌 0부터 시작한다는 점을 잊지 않아야 합니다.


2. 데이터 추가하기: append와 insert의 차이

만들어진 리스트에 새로운 데이터를 넣는 방법은 대표적으로 두 가지가 있습니다.

1) append() : 맨 뒤에 붙이기

가장 흔하게 사용되는 메서드입니다. 기존 리스트의 가장 마지막 위치에 새로운 항목을 추가합니다.

Python
shopping_list = ["계란", "우유"]
shopping_list.append("두부")
print(shopping_list)  # ['계란', '우유', '두부']

2) insert() : 원하는 위치에 끼워 넣기

데이터를 맨 뒤가 아니라 특정 위치에 지정해서 넣고 싶을 때 사용합니다. 첫 번째 인자에는 위치(인덱스), 두 번째 인자에는 추가할 값을 넣습니다.

Python
shopping_list.insert(1, "빵")
print(shopping_list)  # ['계란', '빵', '우유', '두부']

1번 인덱스 위치에 "빵"이 들어가면서 기존의 "우유"와 "두부"는 뒤로 한 칸씩 밀려나게 됩니다.


3. 데이터 삭제하기: remove와 pop, 그리고 del

더 이상 필요 없는 데이터를 리스트에서 제거할 때도 상황에 맞는 방법을 선택해야 합니다.

  • remove("값"): 리스트 안에서 지정한 '값 자체'를 찾아 삭제합니다. 만약 동일한 값이 여러 개 있다면 가장 앞에 있는 하나만 삭제됩니다.

  • pop(인덱스): 지정한 '위치(인덱스)'의 데이터를 삭제하면서, 그 값을 반환(꺼내기)합니다. 위치를 지정하지 않으면 맨 마지막 항목을 꺼냅니다.

  • del 리스트[인덱스]: 지정한 위치의 데이터를 완전히 지워버립니다.

Python
items = ["A", "B", "C", "D"]

items.remove("B")  # 'B'라는 값을 삭제 -> ['A', 'C', 'D']
last_item = items.pop()  # 맨 뒤의 'D'를 꺼내서 삭제함 -> items는 ['A', 'C']

만약 리스트에 존재하지 않는 값을 remove()로 지우려고 하면 ValueError: list.remove(x): x not in list 에러가 발생하므로, 삭제 전 데이터가 포함되어 있는지 확인하는 과정이 필요합니다.


4. 초보자가 자주 하는 리스트 관련 실수 2가지

1) append()의 결과를 변수에 저장하려는 실수

Python
numbers = [1, 2, 3]
result = numbers.append(4)  # 잘못된 사용법
print(result)  # None 출력

append()나 remove() 같은 메서드는 기존 리스트 자체를 직접 수정합니다. 별도의 반환값이 없기 때문에 None이 저장됩니다. 리스트 변경 작업은 변수에 새로 할당하지 않고 numbers.append(4) 형태로 단독 실행해야 합니다.

2) IndexError 범위 벗어남

3개의 값이 들어있는 리스트에서 items[3]을 호출하면 0, 1, 2 범위를 넘어서기 때문에 IndexError가 터집니다. 리스트의 전체 길이를 모를 때는 len(리스트) 함수를 사용하여 전체 개수를 먼저 파악하는 습관을 들이는 것이 좋습니다.

핵심요약

  • 리스트는 대괄호 [ ]를 사용하여 여러 데이터를 순서대로 담아 관리하는 가장 기본적인 파이썬 자료구조입니다.

  • 데이터를 추가할 때는 맨 뒤에 붙이는 append()와 특정 위치에 넣는 insert()를 상황에 맞게 활용합니다.

  • 데이터 삭제 시 값으로 지우려면 remove(), 위치(인덱스)로 지우려면 pop()이나 del을 사용해야 합니다.