[Python] 파이썬 바다 코끼리 연산

FeelingXD·2023년 8월 20일
0

python

목록 보기
3/7
post-thumbnail

😎 파이썬 3.8 버전부터 walrus operator (바다코끼리 연산) 이 추가되었다. 이에 대해 알아보자.

바다 코끼리 연산? 🙄

python 3.8 버전부터 walrus operator(바다코끼리 연산) 이 추가되었다. 정식명칭은 대입 표현식(Assignment Expression) 이지만 작성법(:=) 의 모양이 바다코끼리의 눈과 엄니와 비슷하여 이렇게 명명한것 같다.

바다 코끼리 연산의 개념과 목적

개념

변수 := 표현식 

식의 결과를 변수에 할당함과 동시에 반환한다. 예를들여 변수에 표현식을 대입함과 동시에 식의 검사도 같이 진행된다.

목적

변수의 할당과 반환의 동시에 함으로 코드량을 줄이고 직관적으로 코드를 작성할 수 있게된다.

바다 코끼리 연산의 이용

바다코끼리 연산자의 목적은 표현식에 이름을 부여하고 재사용할 수 있도록 하는 것이 목적이다.

이전의 파이썬에서는 표현식을 바로 캡쳐하는 문법은 없었다. 가령 예를 들어 입력값이 0이아닐경우 반복하는 식이있다고 가정해보자

n = input()
while True:
	if n==0:
    	break
    n = input()

기존의 파이썬은 이런식으로 같은 문장이 한번 더나오거나 검사식을 대입하는 방법이없었다.
이를 바다코끼리 연산과 같이 작성해본다면 다음과 같이 표현할수 있다.


while (n:=input())!=0:
	# your func
    
#혹은

while n:input():
	#your func
# n 이 0일경우 while 조건이 False 이기에 이런식으로 축약할수 있음

위와 같이 코드를 줄일 수 있을뿐 더러 더욱 직관적으로 표현할수 있다. 😎

Examples

다음 예제는 백준 문제인 너의 평점은 문제의 제출 코드이다.

이문제 에서는 다수의 반복적인 input이 발생하고 이 input값을 저장할 필요도 있었기에 바다 코끼리 연산을 이용해 다음과 같이 작성할수 있었다.

# 너의 평점은

import sys
input = sys.stdin.readline

score_dict = {
    "A+": 4.5,
    "A0": 4.0,
    "B+": 3.5,
    "B0": 3.0,
    "C+": 2.5,
    "C0": 2.0,
    "D+": 1.5,
    "D0": 1.0,
    "F": 0.0
}
s_score = 0.0
count_subject = 0
while v := input().split():
    subject, score, grade = v
    if grade == 'P':
        continue
    s_score += float(score) * score_dict[grade]
    count_subject += float(score)
print(f'{round(s_score/count_subject,6)}')
profile
tistory로 이사갑니다. :) https://feelingxd.tistory.com/

1개의 댓글

comment-user-thumbnail
2023년 9월 4일

좋은 문법이네요.

답글 달기