Python/Python 시작하기

14. 파이썬 제어문 - for in 반복문

arvigoes 2019. 12. 19. 23:05

for in 반복문

for 문은 while 문과 마찬가지로 코드를 반복 실행하는 명령입니다.

while 문과의 차이점은 주로 사용하는 용도가 다르고 반복 조건에 차이가 있습니다.

주로 사용하는 용도가 다르지만 반복하는 흐름을 제어하는 부분에서는 동일 합니다.

for 문은 주로 순차적 처리와 컬렉션 순화에 특화된 반복 기능 입니다.

 # 컬렉션 - list, tulpe, dictionary, set 등의 여러 요소를  가지는 집합을 컬렉션이라 함.

 

for 문 사용법

for 변수 in 컬렉션
      실행영역		# 반복수행할 코드 영역
      실행영역		# 반복수행할 코드 영역
      실행영역		# 반복수행할 코드 영역

while 에는 while 예약어 옆에 조건이 있었는데

for 문은 옆에 변수 in(예약어) 컬렉션 가 있습니다.

in 예약어의 왼쪽 (변수) 에는 오른쪽 순회하려는 컬렉션의 요소를 대입할 변수 입니다.

다시 설명하면 "컬렉션에서 순차적으로 하나씩 꺼내서 변수에 넣어주고 실행 영역을 수행 한다" 입니다.

# Code 1
# 기본 for

fruits = ['사과', '바나나', '망고', '오렌지', '한라봉']

for fruit in fruits:    # for in
    print(fruit)        # 실행영역

14-1. for in

for 문은 지정된 컬렉션의 길이만큼 본문의 코드를 반복 실행 합니다.

순회할 컬렉션으로 fruits를 지정합니다. 이ㅣ 리스트에 포함된 요소는 5개 이므로 실행영역은 총 5번 실행됩니다.

in 예약어 왼쪽에 정의한 fruit 변수에는 각 반복 주기마다 fruits 리스트의 요소가 하나씩 순서대로 대입됩니다.

이 변수는 for 문의 본문(실행영역)에서 사용할 수 있습니다.

while 문으로 한번 해 볼까요?

# Code 2
# while 문으로

fruits = ['사과', '바나나', '망고', '오렌지', '한라봉']

length = len(fruits)
index = 0
while index < length:           # while condition
    print(fruits[index])        # 실행영역
    index += 1                  # 실행영역 (반복탈출 조건 조정)
# Code 1
# 기본 for

fruits = ['사과', '바나나', '망고', '오렌지', '한라봉']

for fruit in fruits:    # for in
    print(fruit)        # 실행영역

비교하려고 한번 더 가져와 봅니다.

같은 결과 이지만 용도에 맞게 사용한다면 편해 지는게 느껴지네요

그렇지만 큰 차이가 하나가 있습니다.

while 문에선 망고가 fruits 에서 몇번째 과일 인지 바로 알 수가 있습니다. (index를 통해서)

for 문에서는 알 수가 없네요 ( 지금 코드에선 중요하지 않지만 가끔 몇번째 요소인지가 중요 할때도 있습니다.)

그럴때는 while 로 작성 해도 되지만 for 문으로도 가능 하게 도와 주는 enumerate 라는게 있습니다.

# Code 3
# enumerate
fruits = ['사과', '바나나', '망고', '오렌지', '한라봉']

for fruit in enumerate(fruits):     # for in
    print(fruit)                    # 실행영역

14-2. enumerate

변수에 (index, 컬렉션의 원소) tuple 형태로 가져 옵니다.

https://arvigoes.tistory.com/34?category=741485

 

9. 파이썬 자료형 - 튜플(tuple)

튜플 (tuple) 튜플은 리스트와 거의 비슷합니다. 1. 다양한 타입이 입력 가능합니다. 2. 인덱싱을 사용 할 수 있습니다. 3. 내장함수 len(X) 를 통해 길이 확인이 가능 합니다. 4. 슬라이싱도 사용 가능합니다. 기..

arvigoes.tistory.com

튜플에 대해서 잘 기억나지 않는다면 다시 한번. (반복합습은 기억을 향상 시켜 줍니다.)

 

 

dictionary 반복

다른 컬렉션은 원소가 1개씩이지만 dict 는 key, value 쌍으로 가집니다.

그래서 for 반복구문이 다른 컬렉션과는 차이가 있습니다.

# Code 4
# dict 반복
dict_test = {1:"아이폰", "IMEI":"IMEI12233", "통신사":"SKT", "번호":[10,1234,1234]}

print("키 리스트")
for key in dict_test:     # for in dict
    print(key)            # 실행영역
print("")
print("value 리스트")
for val in dict_test.values():     # for in dict.values()
    print(val)                     # 실행영역

14-4. for dictionary

key 와 value 를 한번에도 가져 올 수 있습니다.

# Code 5
# dict 반복

dict_test = {1:"아이폰", "IMEI":"IMEI12233", "통신사":"SKT", "번호":[10,1234,1234]}
print("Key & value 한번에")

for key, val in dict_test.items():      # for in dict.items()
    print(key,val)                     # 실행영역

14-5. for dict items

실제로 for문을 사용한 부분을 while문으로 바꿀 수 있는 경우도 많고, while문을 for문으로 바꾸어서 사용할 수 있는 경우도 많이 있습니다. (for 문으로 무한루프 만드는 경우는 못 보긴 했어요)