# 파이썬 제어문



1. for문의 기본적인 사용법


for문은 while문과 같이 특정작업을 반복해야 할 때 사용합니다. while문과의 차이점이라면 특정 조건식이 참인 동안 동작하는 것이 아니라 in 키워드 뒤에오는 자료 구조에 대하여 원소단위로 순환하며 순환이 끝날때 까지 반복합니다.

즉 in 뒤에 오는 객체는 반드시 iterable 해야 합니다. 


1
2
for each in 시퀀스자료형 or iterable한 객체:
    print(each)
cs


for 키워드 다음에 오는 each는 for문이 iterable 객체에 접근하여 원소를 하나씩 순환하는 동안에 원소 하나하나가 저장되기 위한 변수입니다. 이름은 아무렇게나 정하셔도 무방합니다. 아래 그림을 보고 다시한번 이해해 보도록 하겠습니다.


for문이 자료구조의 요소 각각에 접근하면서 그 요소들은 임시적으로 each에 저장되고 다음 스텝에서 다른 값으로 대체 됩니다. 


요약하자면 for문은 이터러블 객체를 인자로 사용하는 것이 가능하고 해당 객체의 요소 각각에 접근하는 방식으로 동작합니다. 

그러면 간단하게 숫자를 하나씩 늘려가면서 반복할 수 있는 fot문은 없을까요? 답은 간단합니다. 숫자요소로 이루어진 iterable 객체를 만들어서 인자로 사용하면됩니다. 게다가 파이썬에서는 이 방식을 지원하고 있습니다.

range라는 내장함수는 숫자로 이루어진 이터러블 객체를 만들어냅니다. 


1
2
3
range(10# [0,1,2,3,4,5,6,7,8,9]
range(1,10# [1,2,3,4,5,6,7,8,9]
range(0,10,2# [0,2,4,6,8]
cs


range는 3개의 int형 데이터를 인자로 받습니다. 첫 번째 인자는 시작점인데 ~이상 으로 해석할 수 있고 두 번째는 종료점입니다. ~미만 으로 해석 가능합니다. 마지막 인자는 step으로 작동합니다. 만약 첫번째 인자가 빈칸이라면 인터프리터는 이를 0부터라고 해석합니다.


이를 for 문에 적용하면 아래와 같이 사용할 수 있습니다.


1
2
for i in range(10):
    print(i)
cs


# 파이썬 제어문



!!시퀀스 자료형은 추후에 배울 이터레이터, 제너레이터등을 위하여 필수적으로 알아야 하는 지식입니다!!


1. 시퀀스 자료형


시퀀스 자료형은 원소들을 가지고 있는 데이터 구조이며 멤버쉽 테스트를 지원하는 자료형입니다. 이는 메모리에 상주하는 데이터 구조로써, 보통 모든 원소 값을 메모리에 저장합니다. 파이썬에서 지원하는 시퀀스 자료형은 아래와 같습니다.


- list

- dictionary

- set

- tuple

- string


특정한 자료구조가 원소를 포함하고 있는지 판단 가능하면 시퀀스자료형이라고 생각하시면 됩니다. set, list, dictionary, tuple 등은 간단히 생각해도 원소를 담고 있는데 string은 이해가 쉽지 않죠?

C언어에서 string을 생각해보면 간단합니다. C 언어에서는 char* string = "my name is Rekt77"과 같은 형태로 문자열을 선언하고 각각 문자에대해 인덱스로 접근하는것이 가능합니다.

파이썬에서도 마찬가지 입니다. string은 연속적인 문자의 집합입니다. 고로 인덱스로 접근하는 것이 가능하고 각각의 문자로 분리가능하기 때문에 한 자료구조안에 원소를 담고 있다고 볼 수 있습니다.


1
2
3
4
5
assert 1 in [1,2,3# list
assert 1 in (1,2,3# tuple
assert 1 in {1,2,3# set
assert 1 in {1:"a",2:"b",3:"c"#dictionary
assert "1" in "123" # string
cs


위의 코드는 시퀀스 자료형의 멤버쉽 테스트입니다. assert 문은 시퀀스 자료형의 멤버쉽 테스트를 위해 쓰이는 명령어입니다. 조건이 맞지 않을 경우에는 Assertion Error를 출력하여 자료구조 테스트로 자주 사용됩니다.



2. 이터러블(iterable)


이터러블하다의 의미는 사전적 정의로 '개별 원소를 반복적으로 셀 수 있는' 이라는 뜻을 가지고 있습니다. 이는 파이썬에서 상당히 중요한 의미를 지니는데, 반복문의 사용시 자료구조 내에 포함되어 있는 원소 하나하나에 접근할 수 있는 객체를 뜻합니다. 앞서 말씀드린 시퀀스 자료형들은 전부 이터러블한 객체입니다. 즉 인덱스나 키를 이용하여 접근할 수 있습니다. 

앞으로 for문 같은 반복문에서 자주 보게될 형태이므로 반드시 기억해 놓으셔야 합니다.


+ Recent posts