본문 바로가기

파이썬

05/07 파이썬 11 - 중첩 루프 (nested loop), 2차원 데이터

1) 중첩 루프(nested loop)

 

중첩 루프에 대해 알아보자.

 

중첩 루프의 "루프"는 반복을 의미하고 "중첩"은 말 그대로 여러 개가 있다는 의미이다. 즉, 반복문이 여러 개 겹쳐있는 것을 보고 중첩 루프라고 한다.

 

이중 루프의 예시를 보도록 하자

 

>>>for i in [1, 2, 3, 4, 5]:
	for a in [1, 2, 3, 4]:
    	pass
        
>>>

 

위 코드는 반복문 2개가 사용된 이중 루프이다.

 

중첩 루프는 어떤 경우에 사용되는지 자세히 다루어 보자.

 

아파트 택배 배달을 관리하는 프로그램을 만들어보자

1층엔 [101호, 102호, 103호] 2층엔 [201호, 202호, 203호] 3층엔 [301호, 302호, 303호]가 있다.

 

2차원 데이터

 

 

이와 같이 행과 열의 형식으로 되어있는 데이터를 '2차원 데이터'라고 한다.

2차원 데이터는 평소에 우리가 다루던 데이터와 큰 차이가 있는데, 그것은 리스트 안에 리스트로 데이터를 표현할 수 있다는 것이다.

 

>>> apart = [[101, 102, 103], [201, 202, 203], [301, 302, 303]]
>>>

 

아파트의 각 세대들을 층 별로 나누어 배열로 표현하면 이렇게 표현할 수 있다.

위 배열을 인덱싱을 통해 데이터에 접근해보자.

 

>>> apart[0]
[101, 102, 103]
>>> apart[1][2]
203
>>>

 

이 처럼 인덱싱을 통해 리스트 안에 리스트에 접근하고 또 다시 인덱싱을 통해 리스트 데이터에 접근할 수 있다.

 

그럼 이제 본격적으로 택배 배달 관리 프로그램을 만들어보자.

 

>>> for i in apart:
	for j in i:
		print( j, "호 배달완료!")

		
101 호 배달완료!
102 호 배달완료!
103 호 배달완료!
201 호 배달완료!
202 호 배달완료!
203 호 배달완료!
301 호 배달완료!
302 호 배달완료!
303 호 배달완료!
>>> 

 

위 코드의 변수 i는 [101, 102, 103], [201, 202, 203], [301, 302, 303]라는 리스트를 순서대로 바인딩하게 되고, 변수 j는 각 리스트에 있는 숫자들을 순서대로 바인딩하게 되어 위와 같은 결과가 나온다.