이 글에서는 파이썬 3.x 환경에서 2차원 리스트(two-dimensional list)를 활용해 행렬(matrix)을 초기화하는 방법을 소개합니다. 파이썬다운 우아한 방식과 어떤 언어에서도 통용되는 일반적인 방식, 두 가지 접근법을 예제 코드와 함께 살펴보겠습니다.
방법 1: 리스트 컴프리헨션으로 행렬 초기화
파이썬에서만 제공하는 가장 직관적이고 간결한 방법은 바로 리스트 컴프리헨션(List Comprehension)을 활용하는 것입니다. 먼저 내부 리스트(행)를 초기화한 뒤, 컴프리헨션을 통해 여러 행으로 확장하는 구조입니다. 중첩 반복문 없이 한 줄로 행렬을 만들 수 있어 코드가 짧고 가독성이 뛰어납니다.
예제 코드
# 행의 개수 입력
N = 3
# 열의 개수 입력
M = 3
# 리스트 컴프리헨션으로 행렬 초기화
res = [[i * j for i in range(N)] for j in range(M)]
# 한 줄로 출력 (인라인 표현)
print("인라인 표현:")
[[print(res[i][j], end=" ") for i in range(N)] for j in range(M)]
print("")
# 여러 줄로 출력 (멀티라인 표현)
print("멀티라인 표현")
for i in range(N):
for j in range(M):
print(res[i][j], end=" ")
print("")
실행 결과
인라인 표현: 0 0 0 0 1 2 0 2 4 멀티라인 표현 0 0 0 0 1 2 0 2 4
위 예제에서 각 원소는 i * j(행 인덱스 × 열 인덱스) 값으로 계산됩니다. 인라인 방식은 모든 값을 한 줄에 나열하고, 멀티라인 방식은 실제 행렬의 형태 그대로 줄바꿈하여 출력합니다.
방법 2: 일반적인 방식으로 행렬 초기화
두 번째 방법은 특정 언어에 종속되지 않는 표준적인 방식으로, C나 Java 등 거의 모든 프로그래밍 언어에서 동일하게 구현할 수 있는 다차원 배열 생성 기법입니다. 먼저 0으로 채워진 2차원 리스트를 선언한 뒤, 중첩 for 반복문을 사용해 각 위치의 값을 할당합니다.
예제 코드
# 행의 개수 입력
N = 3
# 열의 개수 입력
M = 3
# 0으로 초기화된 3x3 행렬 선언
lis = [[0, 0, 0], [0, 0, 0], [0, 0, 0]]
# 반복문으로 행렬 값 설정
for i in range(N):
for j in range(M):
lis[i][j] = i * j
# 멀티라인 형태로 출력
for i in range(N):
for j in range(M):
print(lis[i][j], end=" ")
print("")
실행 결과
0 0 0 0 1 2 0 2 4
마무리
이 글에서는 파이썬 3.x에서 2차원 리스트를 이용해 행렬을 초기화하는 두 가지 방법을 학습했습니다. 리스트 컴프리헨션을 활용하면 파이썬 특유의 간결한 문법으로 한 줄에 행렬을 생성할 수 있고, 중첩 반복문을 사용하는 일반적인 방식은 어떤 언어로도 옮길 수 있는 범용적인 접근법입니다. 상황과 코드 스타일에 맞게 두 방법을 적절히 선택해 활용하시기 바랍니다.