2020년 5월 13일
[파이썬] 조건 선택문 (인라인 제어, 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