[TIL] Python 기본

김광일·2022년 3월 6일
0

PYTHON

목록 보기
12/13
post-thumbnail

프로젝트를 진행하며 상품 상세 페이지를 만드는 과정에서 각 상품별로 평점의 평균값을 구해야하는 상황이 생겼다.
그리고 if 문을 한 줄에 구현해야 하는 상황까지 겹쳤다.

물론 함수를 하나 만들어 그 함수를 불러와도 괜찮지만,
평균을 구하고 if문을 넣는 것까지 해보고 싶었기에 작성해보았다.

이 내용의 기반이 되는 list의 평균값을 구하는 몇가지 방법과 if문을 한 줄로 작성하는 방법에 대해 포스팅 해보려한다.


1.List 평균값 구하기


(1). for 반복문

arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] 
result = 0 
for val in arr:
    result += val 
print(f"average : {result / len(arr)}")
> 5.5

(2). sum

arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] 
print(f"average : {sum(arr) / len(arr)}")
> 5.5

for 문을 사용할 때보다 훨씬 간결하게 적을 수 있다.

(3). statiscics 라이브러리

import statiscics
arr_1 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
arr_2 = [20, 10, 30, 40, 50 , 80, 70, 60, 90, 100]

result_1 = statiscics.mean(arr_1)
result_2 = statiscics.mean(arr_2)

print(f"average1 : {result_1}")
> 5.5
print(f"average1 : {result_2}")
> 55

이 statiscics는 파이썬 3.4버전 이상에서 기본적으로 제공해주는 라이브러리이다.
이는 여러 수학 관련 함수를 제공해주는데, 그 중에서도 평균을 구하는 mean 함수를 사용하면 쉽게 값을 구할 수 있다.
다만 이 경우에 리스트 안에 값이 없다면
statistics.StatisticsError 이런 에러가 발생하기 때문에 따로 except 처리를 해주거나 if 문에서 걸러줄 수도 있다.


2. if문 한 줄로 작성하기


변수를 지정하고 그 안에서 if문을 사용하고 싶을 때 어떻게 해야할까?
if ~ elif ~ else를 한 줄에 짧게 쓸 수는 없는가? 고민이 많았다.
간단한 조건인데도 따로 줄을 빼게 되면 가독성도 떨어지게 되고, 딕셔너리의 value 값에는 함수를 넣지 않는 이상 추가할 방법도 찾지 못하여 불편함이 컸다.

먼저 if~else 를 보자.

if x > 0:
	value = 10
else:
	value = 20

# one-liner
value = 10 if x > 0 else 20

if~elif~else를 보자

alpha = 10

if alpha > 7:
	beta = 999
elif alpha == 7:
	beta = 99
else:
	beta = 0

# one-liner
beta = 999 if alpha > 7 else (beta == 99 if alpha == 7 else 0)

딕셔너리를 사용해서 작성할 수도 있다.

alpha = 7

if alpha > 7:
        beta = 999
elif alpha == 7:
        beta = 99
else:
        beta = 0
        
# one-liner
beta = {alpha > 7: 999, alpha < 7: 0}.get(True, 99)

참고 사이트 (블로그)
list 평균값 구하기
if문 한 줄로 작성하기 / 참고

profile
부족함 없이 공부하자

0개의 댓글