3.4.1 파이썬 리스트 (List) 마스터 가이드

학습목표

본 장에서는 무한히 늘어나고 줄어드는 마법의 고무 기차인 ‘리스트(List)’를 자유자재로 다루기 위해, 개념부터 생성, 칼질(슬라이싱), 내부 조작과 고난이도 압축 기법인 리스트 컴프리헨션까지 5가지 세부 파트로 쪼개서 심도 있게 마스터합니다.


📚 리스트 완전 정복 목차

1. 파이썬 리스트의 탄생과 배열(Array)과의 차이

C/Java 등의 딱딱하고 크기가 고정된 ‘배열(Array)’과 파이썬의 동적이고 타입 호환이 완벽한 ‘리스트(List)’의 본질을 비교합니다. 대괄호 [ ]list(), range() 내장 함수를 활용하여 리스트를 초고속으로 찍어내는 법을 학습합니다.

2. 리스트: 타겟 조준과 마법의 슬라이싱

내가 원하는 원소만 젓가락으로 집어내는 인덱싱([0], [-1])과, 거대한 파이썬 샌드위치의 허리를 통째로 도려내어 복제본을 만들어내는 슬라이싱([1:4])의 강력함을 시각적 애니메이션으로 관찰합니다.

3. 리스트 내부 조작 메서드 4대장과 도우미

가장 근본적인 리스트 생존 메서드인 추가(append, insert), 제거(remove, pop) 동작 방식을 익히고, 두 리스트의 지퍼를 채우는 zip, 자동으로 번호표를 매겨 꺼내는 enumerate 등 파이썬 도우미 함수들을 학습합니다.

4. 가장 치명적인 함정: 리스트 메모리와 얕은 복사

파이썬 초보자 99%가 눈물을 흘리는 메모리 참조(Reference) 함정! b = a를 했을 때 왜 원본 도화지가 같이 폭발하는지, 그리고 슬라이싱 [:] 을 통한 얕은 복사와 deepcopy()를 통한 깊은 복사 방패를 배우는 핵심 장소입니다.

5. 지상 최강의 압축 마법: 리스트 컴프리헨션

길쭉한 forif 반복문 4~5줄을 단 한 줄의 시원한 1라인 코드로 납작하게 짓눌러버리는 파이썬 데이터 분석의 꽃(Comprehension)을 완벽히 흡수합니다.

6. 1차원의 세계: 리스트와 수학적 벡터(Vector)

단순한 1차원 리스트 [ ] 가 수학의 벡터(Vector)와 어떻게 연결되는지, 기찻길 위를 달리는 1차원 좌표 탐색의 원리를 이해합니다.

7. 면(Plane)의 탄생: 2차원 리스트와 행렬(Matrix)

1차원 선들을 차곡차곡 쌓아 올려 만든 엑셀 표 형태의 2차원 중첩 리스트 [[ ]] 를 학습합니다. 행(Row)과 열(Col)을 겨냥하는 십자 저격 다차원 인덱싱을 익힙니다.

8. 차원을 넘다: 3차원 리스트와 텐서(Tensor) 공간

깊이, 행, 열의 3차원 입체 큐브를 구현하는 3중 리스트 [[[ ]]] 의 원리를 배우고, 이것이 어떻게 동영상이나 3D 게임, 인공지능의 다차원 텐서(Tensor) 구조와 직결되는지 거시적 관점에서 파악합니다.


☕ Java vs 🐍 Python 스나이퍼 요약 비교

  • Java: int[] arr = new int[5]; 처럼 최초 선언 시 무덤을 파야 합니다. 동적으로 길이를 늘리거나 줄이려면 무거운 ArrayList 장비를 번거롭게 불러와 써야 합니다.
  • Python: arr = [] 이거면 끝입니다. 알아서 메모가 끝까지 늘어나고, 숫자와 글자를 짬뽕으로 넣어도 운영체제가 평온하게 웃으며 받아줍니다.
  • 컴프리헨션: 자바는 Stream API 필터를 써서 여러 줄 거쳐 세팅해야 할 것을, 파이썬은 단축 문법 기계([x for x in list if..]) 하나에 넣어 모든 로직을 1줄에 끝냅니다.

🎧 Vibe Coding

🗣️ 학생 프롬프트 (AI에게 이렇게 명령해 보세요): “파이썬 리스트 컴프리헨션을 써서 1부터 100까지 홀수의 3배수만 구해서 리스트 안에 쓸어 담아 출력해 봐. 그리고 방금 배운 enumerate를 사용해서 그 리스트를 1번째 결과: 3, 2번째 결과: 9 하는 식으로 콘솔에 수직으로 출력해 주는 코드를 작성해 줘.”

서브목차