Python Control Flow

Posted by on January 9, 2019

Recently by the same author:


Python에서 Singleton 구현

You may find interesting:


Reentrant Lock


Thread의 lock

Python 제어 흐름

python의 조건에 따른 제어 흐름



I. 조건문

선언 방법

조건문에 반드시 ‘:’ 을 사용해야함

4칸의 indentation을 사용할 것

  • python은 코드 블록을 indentation으로 판단
  • indentation이 정확하게 수행돼야 정상적으로 수행된다.

pass : 아무것도 하지 않고 지나간다

  • 조건문 안에 어떤 명령문도 없다면 error 발생


값을 비교할때?

and : 왼쪽 부분을 먼저 연산하기 때문에 & 보다 더욱 효율적

  • &는 양쪽 모두 연산하기 때문에 연산 시간이 더욱 오래걸린다
  • or도 ** **보다 효율적

주의할 점 : 조건문 작성시 더 큰 범위에 해당하는 조건식을 뒤에 작성해야


복수 조건문

  • elif <조건식> : 2개 이상의 조건문 사용


조건 표현식

true_value if <조건식> else flase_value

  • 더욱 짧게 코드 작성이 가능
  • 조건에 따라 값을 정할 때 많이 활용

삼항 연산자 처럼 생각할 수 있다

구분이 실행된 뒤 조건식에 따른 value를 반환한다


list 안에 조건을 걸어 반환??

리스트에서 조건을 만족하는는 리스트를 다시 만들 때 다음과 같은 조건 리스트 를 사용한다.

# score내의 원소중 average를 넘는 원소만 list로 반환
cnt = [s for s in score if s > average]




II. 반복문

while 문

조건식이 참일 동안 반복적으로 코드 실행

  • 조건식이 참인지 매번 확인

4칸 indentation 필수


for 문

정해진 범위 내(시퀀스-순서)에서 순차적으로 코드 실행

시퀀스 첫번째 값 부터 마지막 값 까지 수행

for i in list1:

c나 java처럼 i를 하나씩 증가시키는게 아니라, 시퀀스 혹은 range 내에 있는 값들을 하나씩 가져와서 i에 대입


dictionary 반복문

  • for문 iterate를 사용하여 가능
  • dictionary에서 for문 사용하는 4가지 방법
  • .items() : 모든 key, value 반환
# 0. dictionary (key 반복)
for key in dict:
    print(key)

# 1. key 반복
for key in dict.keys():
    print(key)

# 2. value 반복    
for val in dict.values():
    print(val)

# 3. key와 value 반복
for key, val in dict.items():
    print(key, val)



else

반복문을 끝까지 시행한 이후에 실행

break를 통해 중간에 종료되지 않은 경우만 실행

iterator의 값은 마지막 값

for i in range(10):
  if is_it_true:
    break
else:
  print(else)



enumerate

sequence 자료형을 받아서 index와 value를 반환하는 내장 함수

sequence 자료형의 value에 index를 붙인다

index와 value를 pair로 인식

enumerate(<list>, start = n) : n부터 index시작하는 enum 반환

몇개 제외한 list 반환 예시

colors = ['Apple', 'Banana', 'Coconut', 'Deli', 'Ele', 'Grape']

fruit = [color for (a, color) in enumerate(colors) if a not in (0, 4, 5)]
print(fruit)

# result = ['Banana', 'Coconut', 'Deli']




II. Comprehension

python스럽게 if문과 for문 코드를 짧게 축약시켜 작성하는 방법


list comprehension

list에 조건을 추가하여 반환한다.


기본 리스트
[x for x in range(1, 5)]


2배
[x*2 for x in range(1, 5)]


dictionary
{x:x*2 for x in range(1, 5)}


중첩 반복
[(girl, boy) for boy in boys for girl in girls]


조건 추가
[word for word in words if word not in ('a', 'e', 'i', 'o', 'u')]



dicionary Comprehesion

key: value 형태로 표현

cubic = {x: x**3 for x in range(1, 8)}