조건문을 이용해 코드를 간단히 제어해 봤고, 반복문을 사용하여 코드를 제어할 수도 있습니다. 동일한 코드를 일정 수만큼 반복해서 수행해야 할 경우 반복문을 사용하며, 리스트의 모든 요소를 출력하는 등의 일이 여기에 속합니다. Python은 반복문을 위해 for를 지원합니다.

for문 작성하기

for는 Python에서 반복문을 작성하기 위한 키워드로, 기본적으로 for-each(iterable 자료형 참조) 형태를 띱니다. 따라서 for-in으로 알고 있는 것이 좋습니다.

for elem in [1, 2, 3, 4, 5]:
print(elem)
# 1
# 2
# 3
# 4
# 5
view raw for-1.py hosted with ❤ by GitHub
for (first, last) in [(1, 2), (3, 4), (5, 6)]:
print(first, last)
# 1 2
# 3 4
# 5 6
view raw for-2.py hosted with ❤ by GitHub

위는 List의 값을 순차적으로 접근하는 형태의 전형적인 for문이며, 아래는 unpacking을 활용한 for문의 응용을 나타냅니다. 사실 타 프로그래밍 언어의 반복문을 경험해 보았다면, n부터 m까지 반복 형태의 반복문이 더 익숙할 것입니다. Python의 반복문은 for-each 방식이기 때문에, range라는 함수를 사용해야 합니다.

for i in range(10):
print(i)
# 1
# 2
# 3
# ...
# 9
for i in range(1, 5):
print(i)
# 1
# 2
# 3
# 4
view raw range.py hosted with ❤ by GitHub

위처럼, range(n)0부터 n-1까지의 숫자를 가지고 있고, range(n, m)n부터 m-1까지의 숫자를 가지고 있습니다. 사실 Python 3에서의 range() 함수는 range 객체를 반환하는 것이지만, 여기서는 그냥 iterable 자료형, List 등 편한 대로 이해하고 넘어갑시다.

break, continue statement

breakcontinue를 이용해서 반복문을 제어할 수 있습니다. break는 반복문을 종료하고, continue는 현재 루프를 건너뛰고 다음 루프로 제어를 넘깁니다.

for i in range(10):
if i ** 2 > 20:
# i의 제곱이 20 초과라면
print(i)
break
# i(여기선 5) 출력 후 반복문 종료
view raw break.py hosted with ❤ by GitHub
for letter in 'Python': # First Example
if letter == 'h':
# letter가 'h'라면
continue
# 다음 루프로 제어가 넘어감
print(letter)
# 'P'
# 'y'
# 't'
# 'o'
# 'n'
view raw continue.py hosted with ❤ by GitHub

for - else

Python은 for문에서도 else를 사용할 수 있습니다. for문에서 break가 발생하지 않고 모든 루프가 성공적으로 돌면 else 블럭 내부의 코드가 실행되는 형태입니다.

for letter in 'PlanB':
if letter = 'c':
break
else:
print("c not in 'PlanB'")
# "c not in 'PlanB'"
view raw for-else.py hosted with ❤ by GitHub

특정 작업을 수행하는 for문에서 break가 발생하지 않았다는 것은 암시적으로 '모든 작업에 성공했다'는 것을 의미합니다. 따라서 이와 같은 판단을 위해 for-else문은 꽤 필요성이 많은 문법이라고 볼 수 있습니다.

List Comprehension

1부터 100까지의 수 중 짝수만으로 이루어진 리스트를 만들어야 한다면, 아래처럼 코드를 작성할 수 있을 것입니다.

l = []
# 빈 리스트
for i in range(1, 101):
if not i % 2:
l.append(i)
print(l)
# [2, 4, 6, 8, ..., 100]

충분히 괜찮은 코드지만, 해당 로직은 결국 1부터 100까지 반복하며 - 조건을 판단하고 - 리스트에 값을 누적하는 형태입니다. Python에서는 nested(포함된) for문을 이용해 iterable 객체를 만드는 comprehension이라는 개념을 지원하고, 아래와 같이 사용합니다.

l = [i for i in range(10)]
print(l)
# [0, 1, 2, ..., 9]
l = [i for i in range(1, 101) if not i % 2]
print(l)
# [2, 4, 6, 8, ..., 100]


'Python 계열 > Python 레거시 글' 카테고리의 다른 글

[Python] pass statement  (0) 2018.06.24
[Python] 반복문 - while  (0) 2018.06.23
[Python] 조건문 - if  (0) 2018.06.21
[Python] Iterable 자료형 - Dictionary, Set  (0) 2018.06.20
[Python] Iterable 자료형 - List, Tuple  (1) 2018.06.19

+ Recent posts