한양과학기술고등학교

에듀테크 프로젝트 대시보드

리스트 (list)

list mutable sequence sort slice

순서가 있고 변경 가능한(mutable) 파이썬의 기본 컨테이너. 어떤 타입이든 섞어 담을 수 있습니다.

1. 생성

a = [1, 2, 3]
b = []
c = list("abc")          # => ['a', 'b', 'c']
d = list(range(5))       # => [0, 1, 2, 3, 4]
e = [0] * 5              # => [0, 0, 0, 0, 0]

# 2차원은 곱셈 금지 (행이 공유됨!)
grid = [[0] * 3 for _ in range(3)]   # 올바른 방법

2. 인덱싱·슬라이싱

nums = [10, 20, 30, 40, 50]
nums[0]        # => 10
nums[-1]       # => 50
nums[1:3]      # => [20, 30]
nums[::-1]     # => [50, 40, 30, 20, 10]

nums[1:3] = [99]      # 슬라이스 대입 => [10, 99, 40, 50]
nums[:] = [1, 2]      # 내용 전체 교체 (같은 객체 유지)

3. 요소 추가·삭제

메서드동작반환
.append(x)끝에 하나 추가None
.extend(iter)여러 개 이어붙임None
.insert(i, x)i 위치에 삽입None
.pop() / .pop(i)제거하고 그 값 반환요소
.remove(x)첫 번째 x 삭제 (없으면 ValueError)None
.clear()전부 삭제None
del lst[i]인덱스로 삭제—
in-place 메서드는 None 을 반환
  • nums = nums.append(4) → nums 가 None 이 됨. 그냥 nums.append(4)
  • 정렬된 사본이 필요하면 sorted(nums), 제자리 정렬은 nums.sort()

4. 정렬·탐색

nums = [3, 1, 2]
nums.sort()                    # 제자리, => [1, 2, 3]
nums.sort(reverse=True)        # => [3, 2, 1]
nums.sort(key=abs)             # 기준 함수

words = ["banana", "kiwi", "fig"]
sorted(words, key=len)         # => ['fig', 'kiwi', 'banana']

nums.reverse()                 # 순서만 뒤집기 (정렬 아님)
nums.index(2)                  # 값의 위치 (없으면 ValueError)
nums.count(2)                  # 개수
2 in nums                      # 멤버십

5. 복사

a = [[1], [2]]
b = a                # 별칭 — 같은 리스트
c = a.copy()         # 얕은 복사 (a[:] , list(a) 도 동일)
import copy
d = copy.deepcopy(a) # 깊은 복사 — 중첩까지

a.append([3])
# b 도 [3] 이 보임, c/d 는 안 보임
c[0].append(99)      # a[0] 도 바뀜! (얕은 복사라 내부 리스트는 공유)

6. 자주 쓰는 관용구

nums = [1, 2, 3, 4, 5]
total = sum(nums)
biggest = max(nums)
evens = [n for n in nums if n % 2 == 0]

# 스택
stack = []
stack.append(1); stack.pop()

# 큐는 list 대신 collections.deque (popleft O(1))
from collections import deque
q = deque([1, 2, 3]); q.popleft()
"단순함이 복잡함보다 낫다 (Simple is better than complex)"