for 반복문
for 반복문이란 반복되는 작업을 매우 효율적이게 맡을 수 있는 반복문입니다.
for 반복문
for 반복문은 리스트와 함께 사용할 수 있는 반복문입니다.
for ~ in ~:
의 형태로 사용합니다.
for 뒤에는 임의의 변수 이름을 쓰고 in 뒤에는 이터러블(리스트, 튜플, range())의 이름을 씁니다.
for 문이 실행될 때는 i 변수에 리스트의 값이 차례대로 들어갑니다. 예를 들어 1번째 반복에선 a의 첫 번째 값이 i에 들어갑니다.
for + range()
특정한 개수만큼 반복을 시킬 수도 있습니다.
바로 range()
메서드를 쓰면 됩니다.
range()
메서드는 괄호 안에 쓴 길이 만큼의 리스트를 생성해 줍니다.
range()
함수에 대한 더 자세한 내용은 조금 뒤 배우겠습니다.
for + else
조건문에서 공부했던 else를 for과 같이 사용하면 for의 range가 끝나면 else문 안에 있는 파이썬 코드를 실행합니다.
느린 for 반복문을 사용할 때 변수를 미리 지정하고 변수의 이름을 넣는 것이 더 빠릅니다.
예를 들어 range(5)
을 변수 안에 저장하여 for i in range()
대신 for i in (name)
을 실행하면 조금 더 빨라집니다. :::
반복 중단
반복을 하다가 중단시킬 수도 있습니다.
break
라는 코드를 사용하면 됩니다.
break
는 반복문(while
, for
모두 포함) 내에 들어가면 멈추는 조건을 만족하지 않아도 반복문을 강제로 중단시킵니다.
옆에 있는 예시에서는 for 반복문이 0에서 10까지 반복하며 그 수를 출력합니다.
하지만 만일 수가 5가 된다면 바로 for 반복문을 멈추고 Done!!!
을 출력합니다.
Iterable
for 반복문을 사용하여 리스트에 있는 아이템을 순환하며 하나씩 선택하여 사용할 수 있습니다.
이런 순환이 가능한 변수를 Iterable(이-터-러-블)이라고 합니다.
옆에 있는 CODE1은 이터러블을 사용한 for 문의 예시입니다.
CODE2는 for 반복문을 줄인 코드입니다.
[x for x in range(3)]
는 [0, 1, 2]
와 같습니다. 첫 번째 있는 값은 각 아이템의 값이고 첫 번째 다음에는 for 반복문 형태와 같습니다.
리스트 안에 for 반복문 코드가 있습니다.
for 키워드 전에는 돌려주는 값이고 그다음은 원래 for 반복문 형태와 같습니다.
Generator
Generator(제너레이터)는 이터러블과 같다고 할 수 있습니다.
하지만 데이터(예: 튜플)를 만든 후 바로 삭제를 합니다.
myList
를 사용해서 for 반복문을 다시 실행할 수 없습니다.
yield
yield는 return
과 비슷한 기능을 가지고 있습니다.
yield를 사용하면 매우 효율적이게 작업을 처리할 수 있습니다.
- 먼저, 제너레이터 함수를 만듭니다.
- 다음에 제너레이터 함수 안에 for 반복문을 넣은 후 yield 키워드를 사용하여 제너레이터 함수를 사용할 때 되돌려지는 리스트를 만듭니다.
- 변수 안에 되돌려지는 리스트를 만듭니다.
- for 반복문을 만듭니다.
iter()
와 __next__()
iter()
메서드를 사용하면 for 반복문을 대신할 수 있습니다.
iter()
함수를 사용하면 for 반복과 비슷한 이터러블을 만듭니다.
__next__()
메서드를 사용하면 i의 값을 하나하나 돌려줍니다.
__next__()
를 사용할 때마다 새로운 값 하나하나가 새롭게 나타납니다.
만일 마지막 값까지 도착했고 더 이상 값이 존재하지 않는데 __next__()
메서드를 사용했다면 에러가 생깁니다.
range()
range()
는 for 반복문을 사용할 때 매우 유용합니다.
range()
함수는 숫자로 구성된 리스트를 돌려주는 함수입니다.
range(start, stop, step)
가 있습니다.
start
는 숫자의 시작입니다. stop
은 숫자의 끝입니다. step
은 숫자 간의 간격입니다.