SWEA()/Intermediate_Learn

[SWEA]파이썬 SW문제해결 기본 - LIST 2 : 2차원 List (1/2)

코딩의행복 2021. 11. 9. 22:00

파이썬 SW문제해결 기본 - LIST 2

01 2차원 List

(1/2)


이미지를 클릭하시면 SW Expert Academy의 해당 강좌로 이동합니다

01. 2차원 List

1️⃣ 2차원 List 구조

◾2차원 List 구조

    1) 1차원 List를 묶어놓은 List(즉, List를 요소로 가지는 List이다.)

    2) 2차원 이상의 다차원 List는 차원에 따라 Index를 선언한다.

    3) 2차원 List의 선언 : 세로길이(행의 개수), 가로길이(열의 개수)를 필요로 한다.

EX) 2행 4열의 2차원 List
arr = [[0,1,2,3],[4,5,6,7]]
아래 그림과 같다.

 


2️⃣ List 초기화

◾ List 초기화

1차원 리스트
arr = [0,0,0,0,0]
arr = [0] * 5    #[0,0,0,0,0]
arr = [i for i in range(2,9) if i%2==0]    #[2,4,6,8]

2차원 리스트
brr = [[1,2,3],[1,2,3],[1,2,3]]
brr = [[1,2,3]] * 3    #[[1,2,3],[1,2,3],[1,2,3]]
brr = [[1,2,3] for i in range(3)]    #[[1,2,3],[1,2,3],[1,2,3]]
brr = [[i,j] for i in range(3) for j in range(2)]    #[[0,0],[0,1],[1,0],[1,1],[2,0],[2,1]]

3️⃣ 2차원 List 입력 받기

◾ 2차원 List 입력 받기

#예시 1
n, m = map(int, input(),split())

mylist = [0 for _ in range(n)]
#mylist = [0] * n
#위 두 코드는 같은 결과를 나타낸다.

for i in range(n):
    mylist[i] = list(map(int, input().split()))
#예시 2
n, m = map(int, input().split())
mylist = []
for i in range(n):
    mylist.append(list(map(int, input().split())))
#예시 3
n, m = map(int, input().split())
mylist = [list(map(int, input().split())) for _ in range(n)]

4️⃣ 2차원 List에서 데이터의 위치 찾기

◾ 2차원 List에서 원하는 데이터의 위치 찾기

# 예시 1
n, m = map(int, input().split())
newlist = []
mylist = [0 for _ in range(n)]
for i in range(n):
    mylist[i] = list(map(int, input().split()))
    for j in range(m):
        if mylist[i][j] == 1:
            newlist.append([i,j])
# 예시 2
n, m = map(int, input().split())
mylist = [list(map(int, input().split())) for _ in range(n)]
newlist = [(i,j) for i in range(n) for j in range(m) if mylist[i][j] == 1]

5️⃣ 2차원 List의 순회

◾ List 순회 : n X m List의 n*m개의 모든 원소를 빠짐없이 조사하는 방법

1) 행 우선 순회 - List의 을 우선으로 List의 원소를 조사하는 방법

행 우선 조회

#행 우선 조회
arr = [[0,1,2,3], [4,5,6,7], [8,9,10,11]]

n = len(arr)        #행의 개수
m = len(arr[0])     #열의 개수

for i in range(len(arr)):    # i : 행의 좌표
    for j in range(len(arr[i])):    # j : 열의 좌표
        print(arr[i][j]) #필요한 연산 수행

출력 : 0 1 2 3 4 5 6 7 8 9 10 11 12


2) 열 우선 순회 - List의 을 우선으로 List의 원소를 조사하는 방법

열 우선 조회

#열 우선 조회
arr = [[0,1,2,3], [4,5,6,7], [8,9,10,11]]

n = len(arr)        #행의 개수
m = len(arr[0])     #열의 개수

for j in range(len(arr[0])):    #j : 열의 좌표
    for i in range(len(arr)):    #i : 행의 좌표
        print(arr[i][j]) #필요한 연산 수행

출력 : 0 4 8 1 5 9 2 6 10 3 7 11


 

2차원 List의 행 우선 조회, 열 우선 조회을 알아보았다. 그렇다면 지그재그로 조회할 수는 없을까? 아니면 미로찾기를 하듯이 특정 요소의 상하좌우를 조회할 수는 없을까?

이어지는 다음 글에서는 2차원 리스트의 고급 조회, 전치 행렬에 대해 다룬다.

[SWEA]파이썬 SW문제해결 기본 - LIST 2 : 2차원 List (2/2)

 

[SWEA]파이썬 SW문제해결 기본 - LIST 2 : 2차원 List (2/2)

파이썬 SW문제해결 기본 - LIST 2 01 2차원 List (2/2) ※이 글은 2편 중 2편입니다. 전편(1편)을 먼저 확인하는 것을 권장합니다.※ [SWEA]파이썬 SW문제해결 기본 - LIST 2 : 2차원 List (1/2) [SWEA]파이썬 SW..

taewow.tistory.com