
리스트를 원소로 가지는 리스트로 행렬을 표현할 수 있다. 알고리즘 문제에 자주 사용되는 자료구조이기 때문에 활용법까지 알아보자!
matrix = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
matrix = [
[1, 2, 3], # 0
[4, 5, 6], # 1
[7, 8, 9] # 2
] # 0 1 2
이차원 리스트는 행렬(matrix)이다.
직접 작성
반복문
matrix = []
# 0으로 이루어진 nxm 행렬
for _ in range(n):
matrix.append([0] * m)
list comprehension
matrix = [[0]*m for _ in range(n)]
for 문
matrix = []
for _ in range(n):
matrix.append(list(input()))
list comprehension
matrix = [list(input()) for _ in range(n)]
matrix = [
[1, 2, 3, 4],
[5, 6, 7, 8],
[9, 0, 1, 2]
]
# 행 우선 순회
for i in range(3):
for j in range(4):
print(matrix[i][j], end=' ')
print()
i와 j 를 바꾸면 열 우선 순회!
for문 이용
matrix = [
[1, 1, 1, 1],
[1, 1, 1, 1],
[1, 1, 1, 1]
]
total = 0
for i in range(3):
for j in range(4):
total += matrix[i][j]
pythonic한 방법
total = sum(map(sum, matrix))
max_value = max(map(max, matrix))
min_value = min(map(min, matrix))
행과 열을 맞바꾸는 것
matrix = [
[1, 2, 3, 4],
[5, 6, 7, 8],
[9, 0, 1, 2]
]
trans_matrix = [[0]*3 for _ in range(4)]
for i in range(3):
for j in range(4):
trans_matrix[i][j] = matrix[j][i]
빈 matrix를 만든 후 원본의 행과 열을 바꿔 대입
3x4 행렬 → 4x3 행렬

matrix = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
]
n = 3
turn_matrix = [[0]*n for _ in range(n)]
for i in range(n):
for j in range(n):
turn_matrix[i][j] = matrix[j][n-1-i]
for i in range(n):
for j in range(n):
turn_matrix[i][j] = matrix[n-1-j][i]
for i in range(n):
for j in range(n):
turn_matrix[i][j] = matrix[n-1-i][n-1-j]
기본 형태
zip(iterable, iterable.....)
각 iterable의 i 번째 항목들을 묶어 tuple 생성
for i in zip(range(3), ['strawberry', 'grapes', 'peach'])
print(i)
# (0, 'strawberry')
# (1, 'grapes')
# (2, 'peach')
행과 열 바꾸기(전치)
matrix = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
]
print(list(zip(*matrix)))
# [(1, 4, 7), (2, 5, 8), (3, 6, 9)]