◎ Python/파이썬 심화 (책)

[파이썬 심화] 10. 여러 조건에 따라 기능 선택하기

Reo 2022. 9. 1. 18:16
반응형

삼항 연산자로 더 짧은 코드를 만들자

var = int(input("숫자를 입력하세요 : "))

if var < 10:
    print("10보다 작습니다")
else:
    print("10보다 크거나 같습니다")

if-else문을 보통 위와 같이 쓰지만, 한 줄로 더 짧게 만들 수 있다.

var = int(input("숫자를 입력하세요 : "))

print("10보다 작습니다") if var < 10 else print("10보다 크거나 같습니다")

 

이와 같은 삼항 연산자는 코드가 더 짧아진다는 장점 외에도 if-else문보다 메모리도 적게 차지한다. 또한 본인은 함수에서 return할 때 자주 사용한다.

 

참고하면 좋을 링크도 첨부한다.

https://tpgns.github.io/2018/04/24/nested-ternaries-are-great/

 

삼항연산자의 멋짐을 모르는 당신이 불쌍해 - mido

이 글은 Eric Elliott 이 medium에서 연재하는 Composing Software 시리즈를 번역한 것입니다. [원문보기] Smoke Art Cubes to Smoke — MattysFlicks — (CC BY 2.0) 참고 : 이 글은 JavaScript ES6+의 함수형 프로그래밍

tpgns.github.io

 

 

파이썬에서 swtich를 어떻게 사용할까?

C, C++, JAVA 같은 언어는 switch문이 있지만 파이썬에는 존재하지 않는다. 굳이 사용할 이유가 없다는 것이 그 이유이다. 그래도 딕셔너리를 이용해 switch문을 흉내낼 수 있는데, 그 방법을 알아보자.

 

# A = 90점, B = 80점, C = 70점을 출력

def switch(var):
    res = {'A' : "90점", 'B' : "80점", 'C' : "70점"}.get(var, "알 수 없음")
    print(f"{var}학점을 환산하면 {res} 입니다.")

switch("A")
switch("D")

[결과]
A학점을 환산하면 90점 입니다.
D학점을 환산하면 알 수 없음 입니다.

위와 같이 dict의 key, value 특성을 이용해 case문을 만들고 get 메소드를 통해 default문을 만들 수 있다. 

 

 

인덱스 메소드를 직접 만들어보기

def index(iterable, *args): # 패킹을 사용해 args는 여러 숫자를 받을 수 있음
    res = []

    for i in args:
        if i < len(iterable): # 반복형 객체의 길이보다 작으면 res에 추가
            res.append(iterable[i])
        else:
            continue
    
    return res

l = [1, 2, 3, 4, 5]

index(l, 1, 2, 3)

[결과]
[2, 3, 4]

정상적으로 출력된다.

 

index 메소드를 사용하는 것 말고도 또 다른 방법이 있다. 파이썬 내의 연산자를 함수로 구현한 모듈 operator을 사용하는 것이다. 이 안에 들어있는 itemgetter에 인덱스 정보를 넣고 객체를 생성한 후 객체에 리스트를 넣어 조회하면 결과를 튜플로 출력한다.

import operator as op

l = [1, 2, 3, 4, 5]
idx = op.itemgetter(1, 2, 3)
idx(l)

[결과]
(2, 3, 4)

 

 

참고

  • 한권으로 개발자가 원하던 파이썬 심화 A to Z, 문용준/문성혁 저

 

반응형