Python 기초

2차원 리스트 연산

행 합계 계산하기

2차원 리스트에서 가장 기본적인 연산은 행의 합계나 열의 합계일 것입니다.

엑셀에서의 작업을 떠올리면 됩니다. 1번째 행의 합계를 계산해보면 다음과 같습니다.

s = [ [1, 2, 3, 4, 5], [6, 7, 8, 9, 10], [11, 12, 13, 14, 15] ]
cols = len(s[0])

sum = 0
for c in range(cols):	# 1번째 행의 합을 계산한다.
	sum += s[1][c]

print(sum)

 

<실행 결과>

40

 

이웃 요소 접근하기

2차원 리스트는 이미지를 처리할 때도 사용됩니다. 이미지도 본질적으로 각 화소(픽셀)의 값을 2차원적으로 나열한 것이기 때문입니다.

하나의 화소에서 이웃 화소들의 인덱스를 찾아봅시다. 즉 화소의 위치가 (r, c)라고 했을 때, 상하좌우에 있는 화소들의 인덱스는 다음과 같습니다.

 

(r-1, c-1) (r-1, c) (r-1, c+1)
(r, c-1) (r, c) (r, c+1)
(r+1, c-1) (r+1, c) (r+1, c+1)

 

2차원 리스트와 함수

2차원 리스트도 객체이므로 함수로 전달할 수 있습니다. 만약 함수에서 리스트를 변경하면 원본 리스트가 변경됩니다.

하나의 예로 다음과 같이 1과 0이 반복되는 체커보드 형태의 10x10 크기의 2차원 리스트를 초기화하는 함수 init()를 작성하고 테스트해봅시다.

table = []

# 2차원 리스트를 화면에 출력합니다.
def printList(myList):
	for row in range(len(myList)):
		for col in range(len(myList[0])):
			print(myList[row][col], end=" ")
		print()

# 2차원 리스트를 체커보드 형태로 초기화합니다.
def init(myList):
	for row in range(len(myList)):
		for col in range(len(myList[0])):
			if (row+col)%2 == 0:	# (row + col)이 짝수이면 1을 저장합니다.
				table[row][col] = 1

# 2차원 리스트를 생성합니다.
for row in range(10):
	table += [[0]*10]				# 0으로 초기화된 2차원 리스트를 생성합니다.

init(table)
printList(table)

 

<실행 결과>

1 0 1 0 1 0 1 0 1 0
0 1 0 1 0 1 0 1 0 1
1 0 1 0 1 0 1 0 1 0
0 1 0 1 0 1 0 1 0 1
1 0 1 0 1 0 1 0 1 0
0 1 0 1 0 1 0 1 0 1
1 0 1 0 1 0 1 0 1 0
0 1 0 1 0 1 0 1 0 1
1 0 1 0 1 0 1 0 1 0
0 1 0 1 0 1 0 1 0 1