파이썬의 조건문과 제어문은 간략하게 포인트만 작성하고 넘어가도록 하겠다.
조건문
조건문에서는 if 에 대한 간단한 코드만 작성하겠다.
>>> flag = 'A'
>>> if flag == 'A':
print('A')
elif flag == 'B':
print('B')
else:
print('Else')
A
여기서 주의할 점은 조건에서 False 로 간주하는 항목들이다.
TYPE | FALSE |
null | None |
숫자 | 0 |
문자열 | '' |
빈 시퀀스 | [],(),{},set() |
반복문
# while
>>> i=0
>>> while i<5:
print(i)
i+=1
0
1
2
3
4
# for
for 문은 순환되는 타입에 따라 사용하는 방식이 조금씩 다를 수 있다.
기본적인 구문은 아래와 같다.
for 변수 in 순회할 목록:
실행문
순회할 목록에는 리스트나 튜플 등의 순회 가능한 항목이 들어간다.
문자열도 가능한데, 문자열의 경우 하나의 문자씩 가지고 온다.
>>> word = 'Hello'
>>> for ch in word:
print(ch)
H
e
l
l
o
리스트는 하나의 요소를 딕셔너리의 경우, 그냥 사용할 경우 Key 를 가지고 온다.
>>> li = ['A', 'B'] # 리스트 경우
>>> for item in li:
print(item)
A
B
>>> di = {'A' : 1, 'B' : 2} # 딕셔너리 경우
>>> for key in di:
print(key)
A
B
값을 가지고 오고 싶으면, 순회 항목을 값의 목록으로 넣으면 된다.
2 개를 동시에 가지고 오려면, 변수를 2개를 작성하면 된다.
>>> for key, val in di.items():
print("Key : " + key +", Val : " + str(val) )
Key : A, Val : 1
Key : B, Val : 2
for 구문에서 zip() 과 range() 함수를 사용할 수 있다.
이는 순회 가능한 즉, 반복 가능한 객체를 반환한다는 기능이다.
1) zip()
zip() 의 경우, 여러 시퀀스를 동시에 순회하는 기능이다.
이는 zip() 함수의 인자로 넣은 순회 객체들을 하나의 객체로 묶어 반환하기 때문이다.
주의할 점은, 가장 길이가 짧은 것에서 반복이 종료된다는 점이다.
>>> li1 = ['A', 'B']
>>> li2 = ['1', '2']
>>> for key, val in zip(li1, li2):
print(key, val)
A 1
B 2
2) range()
range() 는 해당 범위 안의 값들을 반복 가능한 객체로 반환하는 함수이다.
[: : :] 와 유사한 구조로 사용한다.
>>> for i in range(1,5,2):
print(i)
1
3
컴프리헨션(Comprehension)
컴프리헨션(Comprehension) 은 기본적으로 함축이라는 의미를 가진다.
파이썬에서 이 구문을 통해 시퀀스 객체를 간편하게 생성할 수 있다.
먼저 리스트의 경우이다.
list_C = [ num - 1 for num in range(2,5) ] # [ 반환요소 for 변수 in 순회 ]
>>> list_C
[1, 2, 3]
위 코드를 보면, 한 문장으로 리스트를 반환하고 있다.
마지막 요소로 if 문을 통해 조건을 넣는 것도 가능하다. 이를 이용하면, 예를 들어 짝수 모음도 한 줄로 가능하다.
>>> list_C = [ num for num in range(1,11) if num%2==0 ]
>>> list_C
[2, 4, 6, 8, 10]
셋(Set) 의 경우는 { } 로 변경만 해주면 된다.
딕셔너리는 당연히, { : } 구조가 들어가야겠지요.
주의할 점은, 여기서 튜플(Tuple) 은 생성할 수 없다.
아래 코드는 컴프리헨션으로 리스트와 튜플을 생성했을 때의 타입 차이이다.
>>> list_C = [ num for num in range(1,11) if num%2==0 ] # LIST
>>> type(list_C)
<class 'list'>
>>> tuple_C = ( num for num in range(1,11) if num%2==0 ) # TUPLE
>>> type(tuple_C)
<class 'generator'>
( ) 을 통해 튜플을 생성했을 후, 타입을 확인해보면 제너레이터(Generator) 인 것을 볼 수 있다.
책에서는 지금 제너레이터는 간단하게 일회용 순회 객체라고 설명하고 있다.
이는 리스트에서 pop() 함수를 호출하는 것처럼, 하나 씩 소모하는 성향이다.
( 메모리에 저장되지 않는단다. )
>>> tuple_C = ( num for num in range(1,11) if num%2==0 )
>>> list_C = list(tuple_C)
>>> for item in list_C:
print(item)
2
4
6
8
10
>>> list_C = list(tuple_C)
>>> list_C
[]
'STUDY > Python' 카테고리의 다른 글
[Python] 클로져 (0) | 2020.02.23 |
---|---|
[Python] 함수 (0) | 2020.02.17 |
[Python] 리스트 & 튜플 (0) | 2020.02.09 |
[Python] 변수 및 기본타입 (0) | 2020.02.09 |
[Python] Python 시작하기 (0) | 2020.02.09 |