계산을 간결하게 만드는 파이썬 팁(short)

김기욱·2021년 7월 23일
0

TIL

목록 보기
6/11

max를 활용해 if 없이도 0처리가 가능하다.

예를들어 다음과 같은 함수의 파라미터로 음수가 들어올 수도 있으며,
음수가 들어올 경우에 무조건 0처리를 해야한다고 가정해보자

def calculate_insurance(car_size, days_of_nums):
    if days_of_nums <= 0:
    	return 0
    else:
    	return (carsize + 50) * days_of_nums

이런식으로 단순하게 조건문 처리를 해도 되지만 다음과 같이 max를 활용해서 더 짧게 코드를 작성할 수 있다.

def calculate_insurance(car_size, days_of_nums):
	return (carsize + 50) * max(0, days_of_nums)

True/False를 활용한 간결한 계산

마찬가지로 계산식을 좀더 간결하게 쓸때 활용가능하다.
예를 들어 위의 보험료계산 함수에 나이요소를 넣어서 나이가 25세 미만이면 기본료 50에 10씩을 덧붙여서 계산이 되어야 한다고 생각해보자

def calculate_insurance(car_size, age, days_of_nums):
    basic_fee = 50
    if age < 25:
    	basic_fee += 10
    return (carsize + basic_fee) * max(0, days_of_nums)

위의 코드처럼 간단하게 조건문으로 처리를 해도 되지만

def calculate_insurance(car_size, age, days_of_nums):
    return (carsize + 10*(age<25) + 50) * max(0, days_of_nums)

이런식으로 True = 1 False = 0 이라는 이진개념을 활용하면 더욱 간결하게 코드를 작성할 수 있다.

번외 : 문자사이에 연속된 숫자를 추출하고싶다면 re.findall

import re

string = "The30quick20brown10f0x1203jumps914ov3r1349the102l4zy dog"
numbers = re.findall(r'\d+', string)
print(numbers)

결과 : ['30', '20', '10', '0', '1203', '914', '3', '1349', '102', '4']

refindall을 사용하면 간단하게 정규식에 맞춘 문자열을 이렇게 간단하게 리스트에 담아서 반환해준다. 문자 사이에 있는 숫자를 찾아내어 계산을 해야하는 알고리즘 코드를 짤 때 매우 편리하다.

profile
어려운 것은 없다, 다만 아직 익숙치않을뿐이다.

0개의 댓글