python 행렬 순회

김동완·2022년 4월 13일
0
post-thumbnail

2차원 배열

2차원배열의 선언

  • 1차원 LIst를 묶어놓은 list
  • 2차원 이상의 다차원 List는 차원에 따라 Index를 선언
  • 2차원 List의 선언 : 세로길이(행의 개수), 가로길이(열의 개수)를 필요로 함
  • Python에서는 데이터 초기화를 통해 변수선언과 초기화가 가능함
arr = [[0,1,2,3],[4,5,6,7]]
0123
4567
3
1 2 3
4 5 6
7 8 9
N = int(input())
arr = [list(map(int,input().split())) for _in range(N)]
3
123
456
789
N= int(input())
arr = [list(map(int,input())) for _in range(N)]

배열 순회

n x m배열의 n*m 개의 모든 원소를 빠짐없이 조사하는 방법

행 우선 순회

# i행의 좌표
# j열의 좌표
for i in range(n) :
    for j in range(m) :
        Array[i][j]

델타를 이용한 2차 배열 탐색

arr[0...N-1][0...N-1] # NxN배열
di[] <- [-1,1,0,0]
dj[] <- [0,0,-1,1]
# [-1,0]상 [1,0] 하 [0,-1] 좌 [0,1] 우
di = [0 1, 0, -1] #우하좌상
dj = [1,0, -1, 0]

# for k in range(4) :
#     ni = i + di[k]
#     nj = j + dj[k]
#     if 0<=ni<N and 0<=nj<M :
#         arr[ni][nj]
arr = [[1,2,3],[4,5,6],[7,8,9]]
N = 3
for i in range(N) :
    for j in range(N) :
        for di, dj in [(0, 1), (1, 0), (0, -1), (-1, 0)] :
            ni = i + di
            nj = j + dj
            if 0 <= ni < N and 0 <= nj < N:
                print(i,j,arr[ni][nj])
        print()

0 앞뒤로 붙이기

# 0 앞뒤로 붙이기
N = int(input())
#arr1 = [0]+list(map(int,input().split()))+[0]
arr2 = [[0]*(N+1)] + [[0]+list(map(int,input().split())) for _ in range(N)]
pprint(arr2)

전치행렬

arr = [[1,2,3],[4,5,6],[7,8,9]]

for i in range(3):
    for j in range(3) :
        if i < j :
            arr[i][j],arr[j][i]  = arr[j][i],arr[i][j]
profile
내가 공부한 내용들이 누군가에게 도움이 될지 몰라서 쓰는 벨로그

0개의 댓글