어제 오늘 내일

[Python 기초] "미리 빈 칸을 만들어두자!" 파이썬 리스트 크기 지정과 초기화 본문

IT/Python

[Python 기초] "미리 빈 칸을 만들어두자!" 파이썬 리스트 크기 지정과 초기화

hi.anna 2026. 5. 18. 07:29

리스트의 크기를 미리 지정한다는 것은, 마치 아파트 입주 전에 미리 몇 호실까지 있을지 정해두고 빈 방을 만들어두는 것과 같습니다. 데이터가 들어올 자리를 미리 확보해두면 나중에 특정 위치(index)에 값을 바로 집어넣을 수 있어 편리합니다.


1. 가장 많이 쓰는 방법: 곱하기() 연산자

가장 직관적이고 빠른 방법입니다. [초기값] * 크기 형태로 작성합니다.

📌 예제 코드: 0으로 채워진 리스트 만들기

# 10칸짜리 리스트를 만들고 모두 0으로 초기화
list_size = 10
zeros = [0] * list_size

print(zeros)
# 출력: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]

# 이제 원하는 위치에 바로 값을 넣을 수 있습니다.
zeros[5] = 100
print(zeros)

2. 연속된 숫자로 크기 지정:  활용

단순히 빈 칸이 아니라 1, 2, 3... 처럼 순서대로 숫자가 채워진 리스트가 필요할 때 사용합니다.

📌 예제 코드: 1부터 10까지 채워진 리스트

# 1부터 10까지 숫자가 들어있는 크기 10의 리스트
numbers = list(range(1, 11))

print(numbers)
# 출력: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

3. [중요] 2차원 리스트 크기 지정하기 (주의사항!)

가장 실수가 많은 부분입니다. 2차원 리스트(행렬)를 만들 때 곱하기(*) 연산자를 잘못 쓰면 모든 행이 같은 주소를 가리키는 대참사가 발생합니다.

❌ 잘못된 방법 (복사 버그 발생)

# 3행 3열을 만들고 싶어서 이렇게 하면...
bad_matrix = [[0] * 3] * 3
bad_matrix[0][0] = 99

print(bad_matrix)
# 출력: [[99, 0, 0], [99, 0, 0], [99, 0, 0]] 
# (첫 번째 칸만 바꿨는데 모든 행의 첫 번째 칸이 다 바뀌어 버립니다!)

✅ 올바른 방법 (리스트 컴프리헨션)

각 행을 독립적인 객체로 새로 생성해주어야 합니다.

# 3행 3열 2차원 리스트 만들기
rows, cols = 3, 3
matrix = [[0 for _ in range(cols)] for _ in range(rows)]

matrix[0][0] = 99
print(matrix)
# 출력: [[99, 0, 0], [0, 0, 0], [0, 0, 0]] (정상적으로 하나만 바뀜!)

4. 값이 없는 상태로 칸만 만들기:  사용

숫자 0도 넣기 싫고, "아직 값이 없음"을 명시적으로 표현하고 싶을 때 None을 사용합니다.

# 데이터 5개가 들어올 자리를 미리 비워둠
data_slots = [None] * 5

print(data_slots)
# 출력: [None, None, None, None, None]

📝 마치며

핵심 요약입니다.

  1. 1차원 리스트: [초기값] * 크기 로 빠르게 만든다.
  2. 2차원 리스트: 반드시 리스트 컴프리헨션([[0] * 열 for _ in range(행)])을 사용한다.
  3. 숫자 채우기: list(range(시작, 끝)) 을 활용한다.

리스트의 크기를 정해두고 나면, 이제 그 안에 든 숫자들을 정렬하거나 특정 조건의 값만 필터링하는 작업이 훨씬 수월해집니다.
 

반응형
Comments