for 반복문

타키탸키·2021년 1월 19일
0

Python 입문하기

목록 보기
8/14

앞서 배운 제어문에서 while 반복문을 배웠었는데요. 이번 시간에는 또 다른 반복문 for문을 함께 배워보려고 합니다.

🎰 for 반복문

사실 while문과 for문은 매우 유사한 기능을 합니다. 그럼에도 for문을 사용하는 이유는 상황에 따라 코드가 더 깔끔해질 수 있기 때문입니다.

some_list = [0, 1, 1, 2, 3, 5]

for nums in some_list:
    print(nums)

while문과 유사하게 for문 아래 들여쓰기 된 곳이 수행 부분입니다. for문을 쓰면 이 수행 부분이 반복적으로 실행됩니다.

while문과 다른 점은 조건 부분이 없다는 것입니다. 따라서, while문과 다르게 동작하는 것이죠.

nums는 for문에서 사용되는 변수입니다. 수행 부분에 처음 들어갈 때, 위 리스트의 첫번째 요소인 0이 변수 nums에 지정됩니다. 수행 부분이 실행되면 nums에 있는 0이 출력됩니다.

다음으로 두번째 요소인 1이 nums에 지정되고 수행 부분으로 들어가 출력됩니다. 이런 식으로 리스트의 마지막에 도달할 때까지 리스트에 있는 요소가 하나씩 변수에 지정된 후 출력되는 과정을 반복합니다.

같은 결과를 출력하는 while문을 작성해봅시다.

some_list = [0, 1, 1, 2, 3, 5]

i = 0
while i <= len(some_list):
    print(some_list[i])
    i += 1

두 코드를 비교하면 확실히 for문이 더 짧습니다. 지금과 같은 경우에는 while문 대신 for문을 사용하는 것이 더 효율적입니다. 그러나 for문이 항상 좋은 것은 아닙니다. 어디까지나 상황을 고려했을 때 더 좋은 상황이 있고 더 나쁜 상황이 있는 것이죠.

정리하자면 for문반복 가능한 객체들을 순차적으로 처리할 때 혹은 정해진 횟수를 반복할 때 유리하고 while문반복 횟수를 예측하기 어렵고 무한 반복문을 사용해야 하는 경우에 더 유리하다고 볼 수 있습니다. while의 경우에 조건 부분을 통해 반복을 종료해야 하는 시점을 정할 수 있으니까요.

🎰 range 함수

for문을 활용하여 1부터 5까지 출력하는 프로그램을 만들어봅시다. 우선, for문에서 사용할 변수 i룰 선업합니다. 그 다음 1부터 5까지의 리스트를 작성하고 수행 부분을 작성합니다. 코드는 다음과 같습니다.

for i in [1, 2, 3, 4, 5]:
    print(i)

그런데 만약 100까지 출력해야 한다면 어떻게 해야 할까요? 1부터 100까지 적기? 쉽지 않습니다. 프로그래머들이 싫어하는 반복적이고 귀찮은 상황이죠.

Python에는 이러한 상황을 극복할 수 있도록 돕는 range함수를 가지고 있습니다. range는 세 가지 버전이 있는데 각 버전의 차이는 파라미터의 개수에 있습니다. 즉, 파라미터 하나를 가진 경우, 둘을 가진 경우, 셋을 가진 경우의 버전이 있는 것이죠.

❗ 먼저, 파라미터 두 개를 가진 경우부터 봅시다.

for i in range(start, end):
    print(i)

보는 것과 같이 파라미터 두 개는 start지점과 end지점을 의미합니다. 그런데 출력되는 범위는 start에서부터 end-1까지라는 점을 잊지마세요!

예시는 다음과 같습니다.

for i in range(2, 8):
    print(i)

이 코드는 다음 코드와 같은 결과를 출력합니다.

for i in [2, 3, 4, 5, 6, 7]:
    print(i)

❗ 다음으로 파라미터 한 개를 가진 경우를 봅시다.

for i in range(end):
    print(i)

이 경우, 0부터 end-1의 범위를 가집니다.

for i in range(5):
    print(i)
for i in [0, 1, 2, 3, 4]
    print(i)

위 두 코드는 같은 결과를 출력합니다.

❗ 마지막으로 파라미터 세 개를 가진 경우를 봅시다.

for i in range(start, end, step):
    print(i)

범위는 마찬가지로 start지점부터 end-1지점까지입니다. 첫번째 경우에서 step 파라미터가 추가되었습니다. step은 숫자 사이의 간격을 의미합니다.

다음 두 코드는 같은 결과를 출력합니다.

for i in range(2, 11, 2):
    print(i)
for i in [2, 4, 6, 8, 10]:
    print(i)

여기까지 range 함수에 대해 배워봤는데요. range 함수의 장점은 무엇일까요? 먼저, range 함수는 간편하고 깔끔합니다. 긴 리스트를 직접 작성하지 않아도 리스트를 만들 때와 같은 결과를 만들 수 있습니다.

또 다른 장점은 메모리 효율성이 있다는 것인데요. range 함수를 사용하면 컴퓨터의 메모리를 효율적으로 사용할 수 있습니다.

만약 10000개의 요소가 있는 리스트를 작성하면 컴퓨터 메모리에서 10000개의 정수를 저장할만큼의 공간을 사용해야 합니다. 반면, range 함수를 사용하면 사용된 요소는 바로바로 버리기 때문에 메모리의 효율적으로 사용합니다.

* 이 자료는 CODEIT의 프로그래밍 기초 in Python을 기반하여 작성되었습니다.
profile
There's Only One Thing To Do: Learn All We Can

0개의 댓글