[파이썬] |= 연산자

nayoon·2021년 3월 5일
1

Algorithm

목록 보기
9/55

백준 16234번 인구 이동을 풀다가 다른 분들의 코드를 참고하였는데, 잘 몰랐던 연산자를 만나게 되어서 잊지 않기 위해 글을 쓰기로 했다.. 눈으로만 보면 다 까묵음..

|는 or 연산자이고 union을 뜻한다.
그래서 |= 는 |의 결과를 update한다는 뜻이다..

이 글에 아주 잘 정리가 되어있는데, |와 |=는 dictionary, counter, number에 사용할 수 있다고 한다.

Dictionary

s1 = {"a", "b", "c"}
s2 = {"d", "e", "f"}

print(s1 | s2)
# {"a", "b", "c", "d", "e", "f"}
print(s1)
# {"a", "b", "c"}


s1 |= s2

print(s1)
# {"a", "b", "c", "d", "e", "f"}

이 글을 참고해서 파이썬 공식 문서에서 확인해보니 다음과 같았다.

Python 3.9에서 새로운 기능이 나왔는데, Dictionary Merge & Update Operators이다! 즉, 새로운 병합(merge) 연산자 (|) 와 병합 업데이트 연산자 (|=)가 나왔다.

기존의 dict.update 및 {**d1, **d2}와 같은 dictionary 병합 방법을 보완한다.

Counter

collections.Counter는 multiset 자료 구조와 관련이 있는데, 기본적으로 key-value 쌍의 dictionary의 형태를 가지고 있다.

from collections import Counter

c1 = Counter({2: 2, 3: 3})
c2 = Counter({1: 1, 3: 5})

print(c1 | c2)
# Counter({2: 2, 3:5, 1: 1})

print(c1)
# Counter({2: 2, 3: 3})

c1 |= c2
print(c1)
# Counter({2: 2, 3: 5, 1: 1})

dictionary와 다른 건 없다.

Number

숫자에서는 |는 비트 단위 연산자이다.

n1 = 0
n2 = 1

print(n1 | n2)
1
print(n1)
# 0

n1 |= n2
print(n1)
# 1
profile
뚜벅뚜벅 열심히 공부하는 개발자

0개의 댓글