3 분 소요

for 반복문(for loops)

1. for 반복문(for loops)?

파이썬의 for 반복문은 컬렉션(리스트, 튜플, 문자열 등)의 각 요소에 대해 반복적으로 작업을 수행할 때 사용하는 반복문입니다. 이 반복문은 while 반복문과 달리 컬렉션 내의 모든 요소를 순차적으로 탐색할 때 유용합니다.

2. 기본 구조

컬렉션 안에 있는 요소들을 요소를 받을 변수에 하나씩 저장해서 지정한 명령문을 수행

   for 변수 in 컬렉션: 
       # 각 요소마다 명령문 반복

3. 동작 원리

  • 컬렉션은 반복하고자 하는 요소들의 집합입니다. 변수는 각각의 요소를 저장하는 변수로, ‘for 반복문’이 컬렉션의 첫 번째 요소부터 마지막 요소까지 순차적적으로 ‘변수’에 저장한 후 명령문을 각 요소 마다 실행하며 마지막 요소에서 반복을 종료합니다.

3.1 예제

아래는 리스트에서 각 요소를 출력하는 간단한 for 반복문 예제입니다.


   numbers = [1, 2, 3, 4, 5]

   for number in numbers:  
    
    #여기에서 number라는 변수는 사용자 임의로 정해도 됩니다. 
    # in은 영어로 '~안에'라는 뜻이 있죠. 
    #다시 말해서 numbers라는 리스트 안에 있는 요소들을 
    #number라는 변수에 하니씩 순차적으로 저장을 하겠다는 의미입니다. 

       print(number)  #그 이후 저장된 각 요소들을 prin()라는 명령문을 수행

       #결과
       1
       2
       3
       4
       5
    
    # for 반복문을 사용하여 위의 List 요소들을 출력하시오.

     words = ['안녕', '하세요']

     for i in words: #i라는 변수에 words 리스트안에 있는 각 요소들을 저장
         print(i)    #i에 저장된 각 요소들을 반복해서 출력

        #결과
        안녕
        하세요

파이썬의 for 반복문을 사용하면 컬렉션의 모든 요소를 간단하게 순회하고 작업을 수행할 수 있으며, 반복 작업을 효과적으로 처리할 때 유용합니다.

4. ‘for반복문’과 range함수

for 반복문과 range() 함수를 결합하면 많은 반복 작업을 수행할 때 특히 유용합니다. range() 함수는 연속된 숫자(시퀀스)를 생성하는 데 사용되며, 이를 for 반복문과 함께 사용하면 일정 범위의 숫자를 반복 처리할 수 있습니다. 아래는 이에 대한 설명과 예제입니다.

4.1 range() 함수:

  • range(start, stop, step) 형식으로 사용됩니다.

  • start부터 시작하여 stop 직전까지의 연속적인 숫자를 생성하며, step은 간격을 나타냅니다. startstep은 선택적이며, 기본값은 start=0이고 step=1입니다.

주의

  • 파이썬에는 항상 숫자를 ‘0’ 부터 시작한다는 것을 잊지마세요!

  • 항상 끝나는 숫자는 제외 시킨다는 것을 잊지마세요!

  • range(끝나는 숫자)

  • range(시작숫자, 끝나는 숫자)

   range(6) # 0부터 5까지 연속된 숫자 생성
   
   range(1, 6) #시작 숫자:1 끝나는 숫자:'5' 생성

4.2 for 반복문과 range() 함수 결합

for 반복문과 range() 함수를 결합하여 특정 범위의 숫자를 반복하거나 순차적으로 처리할 수 있습니다.

4.3 예제

아래는 range() 함수와 for 반복문을 결합하여 1부터 5까지의 숫자를 출력하는 예제입니다.

   for number in range(1, 6):
       print(number)

        #결과는 위 예제 3.1과 같음을 볼 수 있습니다. 
       1
       2
       3
       4
       5

이 코드는 range(1, 6)이라는 범위에서 1부터 5까지의 숫자를 생성하고, for 반복문을 통해 각 숫자를 출력합니다. 결과적으로 1부터 5까지의 숫자가 순차적으로 출력됩니다.

range() 함수와 for 반복문을 결합하여 특정 횟수만큼 반복하거나 일정 범위의 작업을 반복 수행할 때 유용하게 활용할 수 있습니다.

5. ‘while 반복문’과 ‘for 반복문’의 차이

while 반복문과 for 반복문은 둘 다 파이썬에서 반복 작업을 수행하기 위한 제어 구조이지만, 그 동작과 사용 사례에는 몇 가지 중요한 차이점이 있습니다. 아래에서는 이 두 반복문의 주요 차이를 설명합니다

5.1. 반복 조건의 표현

  • while 반복문은 반복이 진행될 동안 조건식을 평가하고, 조건이 True인 동안 반복을 계속합니다. 이것은 반복 횟수를 사전에 정확히 알 수 없는 경우나 조건이 미리 정해지지 않은 경우에 유용합니다.

  • for 반복문은 컬렉션 내의 요소를 순차적으로 처리하는 데 사용됩니다. 반복을 시작할 때 요소의 개수와 순서가 이미 정해져 있어서 주로 컬렉션의 각 요소를 처리할 때 사용됩니다.

5.2 사용 사례

  • while 반복문은 주로 특정 조건이 충족되는 동안 반복 작업을 수행할 때 사용됩니다. 예를 들어, 사용자 입력을 받을 때, 파일의 끝까지 데이터를 읽을 때 등 조건에 따라 반복을 제어해야 하는 경우에 유용합니다.

  • for 반복문은 주로 컬렉션(예: 리스트, 튜플) 내의 모든 요소에 대한 반복 작업을 처리할 때 사용됩니다. 예를 들어, 리스트의 모든 항목을 순회하며 작업을 수행하거나, 문자열의 각 문자를 처리하는 경우에 유용합니다.

5.3 반복 변수

  • while 반복문은 반복 변수를 명시적으로 초기화하고 업데이트해야 합니다.

  • for 반복문은 반복 변수가 필요하지 않으며, 대신 컬렉션의 요소가 자동으로 하나씩 선택되어 처리됩니다.

5.3.1 예제: Nested List Comprehensions


#for 반복문의 경우, 단순하게 특정한 범위에 해당하는 반복만 할 경우
# in 앞에  '반복변수'를 넣어주지 않아도 됩니다. 

# 예를들어서 리스트가 요소로 리스트를 갖는 자료형태(nested list)를 만드는 경우
a = [[] for _ in range(4)]  

print(a)

#결과
[[], [], [], []]
# in 앞에 특정한 변수를 넣지 않고 _ 만 넣었다. 
#이는 range(4)에 해당하는 범위만큼 4번 반목만 한다는 의미
#결국 for 앞에 있는 [] 비어있는 리스트를 4번 생성한다는 의미이다. 


for i in range(3): # 0, 1, 2 
    for sublist in a: #리스트 a 안에 있는 요소 리스트 [] 를 sublist 변수에 저장
        sublist.append(i) # 위의 0,1,2를 비어있는 요소 리시트[]에 추가한다

print(a)

#설명:
# 1.첫번째 for 반복문에서 i=0일때,
# 2.두번째 for 반복문에서 리스트 a에 있는 요소[]를 순차적으로 i=0 값을 추가한다
# 3.sublist.append(0) :[[0], [], [], []]  
# 4.sublist.append(0) :[[0], [0], [], []] 
# 5.sublist.append(0) :[[0], [0], [0], []] 
# 6.sublist.append(0) :[[0], [0], [0], [0]]
# 이제 다시 첫번째 반복문에서 i=1 일때,
# 7.sublist.append(1) :[[0,1], [0], [0], [0]]  
# 8.sublist.append(1) :[[0,1], [0,1], [0], [0]] 으로 반복 진행

#결과
[[0, 1, 2], [0, 1, 2], [0, 1, 2], [0, 1, 2]]

간단히 말해서, while 반복문은 조건을 기반으로 반복을 제어하며, for 반복문은 컬렉션의 요소를 순회하면서 반복 작업을 수행합니다. 선택은 사용 사례와 작업의 특성에 따라 이루어져야 합니다.

6. 연습하기

위에 제시된 코드를 직접 연습해보세요.

댓글남기기