:= (윌리스 연산자)란?

Leejaegun·2025년 3월 16일

코딩테스트 시리즈

목록 보기
9/49

🔥 := (월러스 연산자, Walrus Operator)란?

파이썬 3.8부터 도입된 연산자로, 변수를 할당하면서 동시에 사용할 수 있는 표현식.
일반적으로 :=은 루프 안에서 반복적으로 사용될 값을 한 번만 할당할 때 유용

✅ 코드 분석

def solution(s):
    answer = 0
    for i in range(len(s := s.split(" "))):  # 🔥 's'를 변환하면서 바로 길이 계산
        answer += int(s[i]) if s[i] != "Z" else -int(s[i-1])
    return answer

📌 s := s.split(" ")
s를 공백 " " 기준으로 나눈 후, 바로 s 변수에 저장
동시에 len(s)를 range()에 사용
🔥 := 없이 일반적인 코드
위 코드를 일반적인 방식으로 바꾸면 이렇게 됨:


def solution(s):
    answer = 0
    s = s.split(" ")  # s를 변환 후 저장
    for i in range(len(s)):  # 변환된 s의 길이를 사용
        answer += int(s[i]) if s[i] != "Z" else -int(s[i-1])
    return answer

:= 없이도 같은 결과가 나오지만, :=을 쓰면 한 줄로 합칠 수 있어.

✅ := (월러스 연산자) 사용 예제

🚀 1. while 루프에서 사용 (입력받을 때)

while (name := input("Enter name: ")) != "exit":
    print(f"Hello, {name}!")

name을 입력받고, 동시에 조건 체크
exit을 입력하면 종료
🚀 2. 리스트에서 조건을 만족하는 요소 찾기

numbers = [1, 3, 5, 7, 10]
if (even := next((x for x in numbers if x % 2 == 0), None)) is not None:
    print(f"첫 번째 짝수: {even}")

리스트에서 첫 번째 짝수 찾기 (next())
:=를 사용해 짝수를 찾고, 동시에 변수에 저장
🚀 3. 반복문에서 연산 최적화

total = 0
for x in range(1, 6):
    if (squared := x * x) > 10:
        print(f"{x}^2 = {squared} (10보다 큼)")
    total += squared

x x를 한 번만 계산하고 squared에 저장 후 재사용
:=이 없으면 x
x를 여러 번 계산해야 함

profile
Lee_AA

0개의 댓글