시작하기 전 정답 풀이
저번 글에서 간단한 if문 문제를 내드렸죠? 그 문제의 정답과 풀이를 함께 봅시다.
myNum = 22
list = [6, 8, 17, 21, 23]
if myNum in list:
print("지각을 하지 맙시다.")
else:
print("참 잘했어요.")myNum은 제 번호인 22번을 나타냅니다. list는 문제에서 주어진 그대로 청소당번의 명단입니다. if는 참일 때 실행된다고 했죠? myNum in list 는 list 안에 myNum이 존재할 경우 True를 반환합니다. 즉, 제가 청소 당번이라면 “지각을 하지 맙시다.”라고 출력되었을 것입니다. 하지만 list 내에는 22라는 요소가 없으므로 “참 잘했어요.”가 출력될 것입니다.
in함수를 사용한다면 간단히 해결할 수 있는 문제였습니다.

이번 글에서는 반복문의 의미와 파이썬의 for문의 사용법에 대하여 알아보겠습니다.
코드를 반복하는 반복문
이전 글에서 제어문은 참일 때 코드를 실행하였죠? 반복문도 비슷합니다. 주어진 조건에 맞게 코드 블록을 반복합니다. 크게 본다면 반복문 역시 제어문이라고 할 수 있죠.
간단하게! for문
for문은 반복문 중의 하나로 문장 구조를 쉽게 이해할 수 있다는 큰 장점이 있습니다. 가독성을 중요하게 여기는 작업을 할 때 유용하게 쓸 수 있겠네요.
for문의 기본 구조는 이렇습니다.
for value in a:
print("*")
print("-")
...여기서 a는 리스트나 튜플, 문자열 형태가 될 수 있습니다. 첫 번째 요소부터 마지막 요소까지 차례로 value변수에 대입되어 코드를 수행합니다. 한번 예시를 볼까요?

i에 aList의 요소값인 1, 2, 3이 차례대로 대입된 것을 볼 수 있습니다. 결과를 보면 요소의 개수 만큼 3번 반복하네요. 그렇다면 리스트의 요소값이 튜플이나 리스트를 가지고 있는 다중 리스트라면 어떻게될까요?

bList는 요소값으로 튜플을 가지네요. 튜플의 요소가 둘이므로 대입할 변수를 first와 last, 둘로 선언하였습니다. 그 후 리스트 내의 튜플의 요소 둘을 서로 더하여 출력합니다.
간단한 문제를 내 볼까요?
리스트와
for문을 이용해 정수로 이루어진 리스트의 요소 중 30 이상인 수를 출력해봅시다. 리스트는 미리 정해드리겠습니다.
numList = [15, 60, 41, 25, 77]range 함수와 for문
range는 수로 이루어진 리스트를 자동으로 만들어주는 함수입니다. 한번 사용법을 알아볼까요?
a = range(1, 10, 1)간단합니다. 앞에 써준 1은 시작 요소를 뜻하고 10은 끝낼 수를 뜻합니다. 하지만 끝낼 수는 미만을 기준으로 합니다. 다시 말해서 a는 각각 요소에 1부터 9까지의 수를 각각의 요소에 대입합니다. a = [1, 2, 3, 4, 5, 6, 7, 8, 9] 의 리스트가 되었네요. 끝부분 1은 요소 하나의 간격입니다. 1이라고 작성하였으니 1, 2, 3과 같이 1 만큼 값이 증가하네요.
맨 앞에 쓰는 인자는 생략할 수 있습니다. 만약 a = range(2) 이라면 0부터 2 미만인 리스트를 만들겠네요.
이해를 위해 range함수를 사용한 문제를 내보겠습니다.
위에서 간단한 문제를 제시했었죠? 그 문제에서
range함수를 사용해 코드를 바꾸어 작성해봅시다. (힌트 : 리스트 관련 함수인len함수 사용)
numList = [15, 60, 41, 25, 77]for문을 리스트 안에?
이 내용을 설명하기 전에 일반적인 경우에서 for문과 리스트, 두 개를 조합한 사용법을 알아봅시다.

aList의 요소값을 차례대로 i에 옮긴 후 newList의 요소값을 i의 5배로 대입하는 코드입니다. 우리가 알던 for문의 사용법이죠. 하지만 이 방법 이외에 다른 방법이 하나 더 있습니다.
리스트 내에 for문을 포함시키는 방법인 리스트 내포로 위 코드를 다시 작성해보겠습니다.

어떠신가요? 일반적인 방법을 사용한 코드보다 조금 간결해졌죠? 리스트 내포를 사용하면 코드를 조금 더 간결하게 작성할 수 있습니다.
리스트 내포의 기분 구조는 이렇습니다.
value1 = [regex for value2 in list_tuple_str1 if conditional1
for value3 in list_tuple_str2 if conditional2
... ]- value1, value2, value3 : 서로 다른 변수명을 뜻합니다.
- regex : 표현식을 뜻합니다. 연산자가 들어갈 수 있는 자리죠.
- list_tuple_str1, list_tuple_str2 : 리스트, 튜플, 문자열과 같이 반복이 가능한 객체를 뜻합니다.
- conditional1, conditional2 : 조건문을 뜻합니다.
(목적에 따라 변수명이 꼭 서로 다를 필요는 없습니다만 이해를 쉽게하기 위해서 숫자를 붙였습니다.)
위에서 본 리스트 내포를 사용한 코드와 조금 모양이 다르죠? 리스트 내포는 한 개의 반복문만 넣을 수도 있고, 그 이상의 반복문을 넣을 수도 있습니다. 그리고 조건문은 생략이 가능합니다. 그래서 제가 작성한 코드와 모양이 조금 다른 것이죠.
한번 조건을 정해서 리스트 내포를 사용해볼까요? if문을 추가해 aList의 요소가 짝수일 경우에만 5를 곱하여 newList에 저장해봅시다.
aList = [1, 2, 3, 4]
aList의 요소 중 짝수인 2와 4에 5를 곱하여 newList에 10, 20으로 대입하는데 성공하였습니다.
리스트 내포는 조금 생소할 수도 있는 방법이기 때문에 처음부터 잘 이해하는것이 중요하다고 생각하는 내용입니다.
오늘은 반복문과 반복문 중 하나인 for문에 대하여 알아보았습니다. 다음 글에서는 또 다른 반복문인 while문, 제어문의 continue문과 break문에 대하여 알아보겠습니다.
- 코딩 초보자를 위한 Python with version 3.X — Part 8
- 코딩 초보자를 위한 Python with version 3.X — Part 9
- 코딩 초보자를 위한 Python with version 3.X — Part 10

