[파이썬] 조건 선택문 (인라인 제어, switch, 인덱스)

I. 인라인 제어문

  • 라인 내 삼항 연산자를 이용하여 제어문 표시
[Ture인 경우 수행문] if [조건식] else [False인 경우 수행문]
  • [예제] 인라인 제어문
a = 10; b = 20

c = a if a > b else b   # 조건식이 True인 경우 a, False인 경우 b를 c에 할당

print(c)

c = a if a < b else b   # 조건식이 True인 경우 a, False인 경우 b를 c에 할당

print(c)

[결과]
20
10

 

II. 특정 값으로 조건 판단(switch)문

  • 특정 조건의 결과가 딕셔너리(dict)의 키(Key)로 정의, 해당 값이 함수로 저장
  • 특정 조건 판별 시 딕셔너리를 조회하여 함수를 가져와서 실행하면 스위치 구문과 같은 방식으로 처리
  • [예제] 스위치 구문
def func100() :
    print(100)

def func200() :
    print(200)

switch = { '100' : func100, '200' : func200 }   # 변수를 switch에 할당

switch['200']()                 # 색인 연산으로 200을 조회
switch.get('100', func200)()    # get 메소드로 검색 가능
switch.get('50', func200)()     # Key(50)가 없으면 함수가 반환

[결과]
200
100
200
  • switch.get 메소드 사용 시 Key값으로 먼저 검색하고, 해당 Key값이 딕셔너리에 없으면 함수가 반환

 

III. 특정 인덱스 정보 검색

  • 별도의 함수를 작성해서 여러 개의 인덱스 정보 확인 가능
  • [예제] 특정 인덱스를 선택하여 처리
a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]     # 리스트 객체 생성

def index(iterable, *args) :            # 매개 변수로 반복현 객체와 인덱스 정보 사용
    result = []                         # 반환 결과를 저장할 변수에 빈 리스트 객체 할당
    for i in args :                     # 인덱스 정보를 꺼냄
        if i < len(iterable) :          # 반복형 객체 길이 보다 작은지 확인
            result.append(iterable[i])  # 원소를 리스트에 추가
        else :
            continue                    # 인덱스 범위보다 크면 건너뜀
    
    return result                       # 순환문 종료 후 반환

print(index(a, 2, 4))                  # 함수를 호출하여 2, 4번째 원소를 조회

[결과]
[3, 5]
  • 이미 구현되어 있는 파이썬 모듈 operator를 import 후 itemgetter 클래스를 사용하여 원소 조회 가능 

 

[참고]

  • 잇플, “한 권으로 개발자가 원하던 파이썬 심화 A to Z”, 2019.11

콘텐츠 사용 시 출처 표기 부탁 드리고, 궁금한 점이나 의견은 댓글 남겨주세요^^