본문 바로가기
STUDY/Python

[Python] 조건문 & 제어문

파이썬의 조건문과 제어문은 간략하게 포인트만 작성하고 넘어가도록 하겠다.

 



조건문

 

조건문에서는 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