본문 바로가기
TIL

[python] in 연산자의 실행시간, 시간 복잡도 BigO

by _KHK 2022. 1. 7.

in 연산자

파이썬에서 자주 사용되는 in 연산자 예제

ls = [1, 2, 3]
if 4 in ls :
	print("exist")
else :
	print("not exist")
    
>>> "not exist"
dc = {
    'a' : 1,
    'b' : 2,
    'c' : 3,
}
if 'c' in dc.keys() :
	print("exist")
else :
	print("not exist")

for k, v in dc.items():
    if k == 'c':
        print(v)
        
>>> "exist"
>>> 3

 


in 연산자의 Big-O

 

나는 알고리즘 공부를 하던 중에 in연산자의 bigO가 궁금해졌다.

해시의 문제풀이로 사용되는 dict의 경우 in 연산자가 어떤 속도를 내게 될지 궁금해졌기 때문이다.

그리고 list, tuple / set, dict 객체에서 in연산자의 실행 속도가 서로 다른 것을 확인했다.

 

Big-O

list , tuple

  • list나 tuple인 경우엔 시간 복잡도가 O(n)이다.
  • 선형 검색의 형태이다.

set , dict

  • 평균 실행시간 O(1)
  • 최악의 경우 O(n)이 될 수 있다. 이것은 hash충돌이 많아질 경우 성능 저하로 발생한다.

 


참고 링크

https://wiki.python.org/moin/TimeComplexity

https://twpower.github.io/120-python-in-operator-time-complexity

 

 

 

 

'TIL' 카테고리의 다른 글

알고리즘 풀이에 대한 고민  (0) 2022.04.09
[python] decorator 파이썬 데코레이터 이해하기  (0) 2022.01.22
윈도우11 oh my posh 터미널 꾸미기  (0) 2021.12.31
윈도우11 WSL2 설치  (0) 2021.12.31
[2021.12.30] TIL  (0) 2021.12.31

댓글