안녕하세요
for i in range(0, 10):
이라고 했을 때 변수 i를 for문 안에서 선언한 것인가요?
type(i)로 확인해보니 정수형 변수라고 나오더군요.
그리고 반복문이 종료된 후 변수 i를 불러오면 9가 나왔습니다.
중첩for문에서
for i in range(5): # 5번 반복. 바깥쪽 루프는 세로 방향 for j in range(5): # 5번 반복. 안쪽 루프는 가로 방향 print('j:', j, sep='', end=' ') # j값 출력. end에 ' '를 지정하여 줄바꿈 대신 한 칸 띄움 print('i:', i, '\\n', sep='')j는 5번 반복이 끝나면 자동으로 0으로 초기화되는건가요?
맨 처음 i=0일 때 j=0에서 시작해서 j=4가 된 후 i=1이 되는데
i=1일 때 j는 4부터 시작하는 게 아니라 0부터 시작하는건가요?
그렇다면 별도로 j=0으로 초기화할 필요 없는건가요?
중첩하지 않은 for문에서는 카운터 변수가 마지막 값으로 저장되어 있는데 왜 중첩for문에서는 바깥 루프 한바퀴 돌 때마다 초기화되는건가요?
중첩 루프 여부와 상관 없이 루프가 끝난 다음에 i와 j 값을 찍어보면 마지막 값이 출력됩니다. 이 예제에서 마지막 i와 j 값은 4입니다.
i와 j는 초기화를 하지 않아도 range(5)로 생성된 [0, 1, 2, 3, 4]의 값이 차례대로 할당됩니다.
중첩 루프이면 안쪽 루프가 처음부터 다시 실행되는 것이니까 예제에서 j는 range(5)의 범위이니 항상 [0, 1, 2, 3, 4]를 한 번씩 반복해서 실행하게 됩니다.
중첩 루프는 안쪽에서 실행되는 루프 전체를 반복해서 실행한다는 뜻입니다. 바깥쪽 루프는 안쪽 루프 전체를 반복해서 실행할 횟수를 지정하는 게 됩니다.
루프 하나는 1차원 데이터를 다룹니다. 즉, 가로로 나열된 데이터만 다룹니다.
2중첩 루프는 2차원 데이터를 다룹니다. 안쪽 루프는 가로로 나열된 데이터를 다루고, 바깥쪽 루프의 1 증가는 2차원 데이터의 행을 바꾸는 것이죠. 그림 19-2를 보면 이 관계가 설명되어 있습니다.