프로그램을 만들다 보면 값 하나만 다루는 경우보다 비슷한 성격의 값 여러 개를 함께 다뤄야 하는 경우가 훨씬 많습니다. 학생의 출석부 명단, 장바구니에 담긴 상품 목록 등 현실의 데이터는 대부분 묶음으로 등장하기 때문입니다. 이때 값을 각각 따로 변수로 만들면 관리가 번거롭고 반복 처리도 어려워지는데, 프로그래밍에서는 이러한 여러 데이터를 하나의 구조 안에 순서대로 묶어 다루기 위해 '리스트(List)'를 사용합니다.
오늘은 파이썬 프로그래밍의 핵심이자 가장 자주 쓰이는 자료구조인 리스트의 정의부터 추가, 수정, 삭제 방법, 그리고 주의해야 할 메모리 특성까지 상세히 알아보겠습니다.
--------------------------------------------------------------------------------
1. 파이썬 리스트(List)란 무엇인가?
파이썬 리스트는 여러 값을 순서대로 담아 하나의 변수로 다룰 수 있는 자료구조입니다. 대괄호 [ ]를 사용하거나 list() 함수를 통해 선언할 수 있습니다. 안에 아무 값도 없는 공백 리스트를 선언할 수도 있으며, 숫자, 문자열, 불리언(Boolean) 등 다양한 자료형을 혼합하여 하나의 리스트에 담을 수 있다는 강력한 유연성을 자랑합니다. 즉, 리스트는 같은 종류만 넣는 단순한 저장 도구가 아니라, 다채로운 요소를 순서 있는 구조로 다룰 수 있게 해주는 범용적인 데이터 구조입니다.
--------------------------------------------------------------------------------
2. 순서가 있는 데이터 : 인덱싱(Indexing)과 슬라이싱(Slicing)
리스트는 데이터의 '순서'가 배치되는 구조이므로 인덱싱과 슬라이싱 기법을 사용할 수 있습니다.
- 인덱싱(Indexing) : 파이썬의 인덱스는 0부터 시작하므로 첫 번째 원소는 0번 인덱스를 가집니다. 예를 들어 fruits을 호출하면 리스트의 첫 번째 데이터를 가져오게 됩니다. 만약 오른쪽 끝에서부터 거꾸로 데이터를 찾고 싶다면 음수 인덱싱을 활용할 수도 있습니다.
- 슬라이싱(Slicing) : 한 번에 일련의 구간 요소들을 추출하고 싶을 때는 슬라이싱을 사용합니다. [시작 인덱스 : 마지막 인덱스]의 형태로 대괄호 안에 콜론(:)을 사용하여 범위를 지정하며, 이때 마지막 인덱스 값은 포함하지 않고 바로 직전까지만 출력된다는 점에 유의해야 합니다.
--------------------------------------------------------------------------------
3. 리스트의 강력한 무기 : 데이터 추가, 수정, 삭제 (Mutable)
파이썬에서 데이터 타입은 수정 가능한 가변형(Mutable)과 수정 불가능한 불변형(Immutable)으로 나뉩니다. 문자열(str)이나 튜플(tuple)은 한 번 생성된 후에는 내부 데이터를 변경할 수 없는 불변형 자료구조입니다. 이와 다르게 리스트는 대표적인 가변형 자료구조로서, 객체가 생성된 후에도 자유롭게 데이터를 추가, 수정, 삭제하며 변화에 대응할 수 있습니다.
- 요소 추가 : append(값) 함수를 사용하면 리스트의 맨 뒤에 새로운 데이터가 추가되며, 내가 원하는 특정 위치에 값을 삽입하고 싶다면 insert(인덱스, 값)을 사용합니다.
- 요소 수정 : 리스트는 요소 단위로 수정하기 좋기 때문에, 리스트[인덱스] = 새로운 값의 형태로 인덱스에 직접 접근하여 재할당함으로써 간단하게 요소를 덮어쓸 수 있습니다.
- 요소 삭제 : 인덱스를 활용해 지우고 싶다면 del 리스트[인덱스]나 삭제한 요소를 반환하는 pop(인덱스)를 사용합니다. 인덱스가 아닌 특정 값을 찾아 지우고 싶다면 remove(값)을 활용하고, 리스트 내의 모든 요소를 초기화할 때는 clear()를 사용합니다.
--------------------------------------------------------------------------------
4. 행과 열을 다루는 2차원 리스트 (심화)
현실 세계의 데이터는 단순히 1차원으로만 존재하지 않으며, 행과 열의 구조를 갖는 2차원 데이터인 경우가 많습니다. 파이썬에서는 리스트 안에 또 다른 리스트를 중첩해서 넣음으로써 2차원 데이터를 직관적이고 쉽게 표현할 수 있습니다. 예를 들어 아파트의 층과 호수 데이터를 다룰 때, 외부 리스트는 '층'을 의미하고 내부 리스트는 '각 층의 호수'를 의미하게 구성할 수 있습니다. 이러한 중첩 리스트에서 특정 데이터에 접근하려면 my_list와 같이 두 세트의 대괄호를 이용하여 이중 인덱싱을 거쳐야 합니다. 첫 번째 인덱싱 결과는 1차원 리스트 자체가 되며, 두 번째 인덱싱을 통해 비로소 최종 개별 원소에 도달합니다.
--------------------------------------------------------------------------------
5. 리스트 사용 시 주의사항: 에일리어싱(Aliasing)
리스트를 다룰 때 입문자들이 가장 많이 헷갈려 하는 부분이 바로 메모리와 관련된 '복사'의 문제입니다. 변수 이름은 데이터 자체가 아니라 데이터가 위치한 메모리 블록을 가리킵니다. 따라서 list_2 = list_1과 같이 단순 대입 연산자로 변수를 할당하면, 두 변수가 완전히 동일한 메모리 객체를 가리키는 에일리어싱(Aliasing) 현상이 발생합니다. 이 경우 하나의 변수에서 데이터를 수정하면 다른 변수에도 똑같이 변형이 반영되어 코드를 꼬이게 만들 수 있습니다. 이 문제를 예방하고 독립된 사본을 만들려면, list_2 = list_1[:]처럼 슬라이싱을 이용해 복사해 주는 것이 안전합니다.
--------------------------------------------------------------------------------
💡 마무리하며
파이썬 리스트는 여러 값을 하나로 묶어 순서대로 다루고, 추가와 삭제를 통해 변화하는 데이터를 유연하게 관리할 수 있게 해주는 필수적인 자료구조입니다. 하나의 리스트 안에 여러 요소가 있다는 감각을 잡고 나면 이후에 나오는 반복문과의 결합이나 튜플, 딕셔너리 같은 다른 파이썬 문법도 훨씬 쉽게 받아들일 수 있습니다. 오늘 정리한 리스트의 기본 개념과 주요 함수들을 직접 타이핑하며 완벽하게 마스터해 보시길 바랍니다!

반응형
'프로그래밍 개발 공부' 카테고리의 다른 글
| 소프트웨어 테스트, 선택이 아닌 생존 전략이 된 이유 (feat. 테스트 자동화 & AI) (1) | 2026.05.30 |
|---|---|
| "서버가 또 터졌다고요?" 완벽한 프로그램은 없다: 실무자가 알아야 할 프로그램 장애를 견디는 시스템 설계 가이드 (0) | 2026.05.28 |
| [Python 학습] 2-1 문자열은 단순한 글자가 아니다: 인덱싱, 슬라이싱 그리고 불변성의 이해 (0) | 2026.05.25 |
| [개발 트렌드] "내 컴퓨터에선 되는데?" 로컬 시대의 종말과 '클라우드 개발(EaaS)' 트렌드 완벽 분석 (0) | 2026.05.23 |
| [웹 개발 필수] "데이터는 항상 신뢰할 수 없다" — 입력 검증과 데이터 무결성의 중요성 (0) | 2026.05.21 |