본문 바로가기
프로그래밍/python

파이썬 자료형별 시간 복잡도

by 코끼리_땃쥐 2025. 3. 24.

파이썬으로 코딩을 하다 보면 "이게 느린가 빠른가?" 궁금할 때가 많죠.
특히 자료구조(list, dict, set 등)를 어떻게 쓰느냐에 따라 속도 차이가 꽤 납니다.

이번 글에서는 초보자분들이 이해하기 쉽게, **파이썬의 주요 자료형의 속도 차이(=시간 복잡도)**를 한눈에 정리해볼게요!

 


시간 복잡도란?

간단히 말해, **"데이터가 많아질수록 얼마나 느려지느냐?"**를 나타내는 지표입니다.

예를 들어,

  • 어떤 작업이 O(1)이면 = 데이터가 10개든 10만 개든 속도가 거의 안 느려짐
  • O(n)이면 = 데이터가 많아질수록 비례해서 느려짐

 


1. 리스트(list)

리스트는 [ ] 로 감싸서 쓰는 가장 많이 쓰는 자료형

my_list = [1, 2, 3]

 

작업속도 (O) 설명
append() O(1) 맨 뒤에 추가 (빠름)
insert(i, x) O(n) 중간에 넣을 땐 밀어줘야 해서 느림
pop() O(1) 맨 뒤에서 꺼내는 건 빠름
pop(i) O(n) 중간 꺼내면 느림
x in list O(n) 포함 여부 확인은 일일이 확인

 

리스트는 순서가 중요할 때 좋아요.
하지만 중간에 뭔가 넣거나 지울 땐 좀 느릴 수 있어요.


 

2. 딕셔너리(dict)

딕셔너리는 key: value 형태로 데이터를 저장합니다.

my_dict = {"apple": 100, "banana": 200}

 

작업속도 (O) 설명
값 넣기 (dict[k]=v) O(1) 거의 항상 빠름
값 읽기 (dict[k]) O(1) 바로 찾음
삭제 (del dict[k]) O(1) 빠름
key in dict O(1) 존재 여부도 빠름

딕셔너리는 **"이름표 붙여서 저장"**하는 느낌.
속도가 매우 빠르기 때문에, 뭔가를 빠르게 찾고 싶을 때 좋아요!

 


3. 집합(set)

집합은 수학 시간에 배운 그 "집합"이에요. 중복 없이 저장하고, 빠르게 검사할 수 있습니다.

my_set = {1, 2, 3}

 

작업속도 (O) 설명
추가 (add) O(1) 빠름
삭제 (remove) O(1) 빠름
x in set O(1) 매우 빠름!

set은 중복 제거, 포함 여부 확인에 최고예요.
리스트에서 같은 값이 너무 많을 땐 set으로 바꿔보세요!

 


 

4. 튜플(tuple)

튜플은 리스트처럼 생겼지만, 수정이 안 됩니다.

my_tuple = (1, 2, 3)

 

작업속도 (O) 설명
인덱싱 t[0] O(1) 빠름
x in tuple O(n) 찾을 땐 느릴 수 있어요

튜플은 데이터를 변경할 필요가 없을 때 사용합니다.
속도보단 고정된 값을 표현할 때 좋아요.


문자열(str)도 참고!

문자열도 일종의 자료형입니다.

text = "ddatg"

 

작업속도 (O) 설명
인덱싱 s[0] O(1) 빠름
in 연산 O(n) 문자 포함 여부는 느릴 수 있음
문자열 붙이기 (+) O(n) 많이 붙이면 느려짐 (join 쓰세요!)

 


 

요약표 (한눈에 보기)

 

자료형 추가 삭제 조회 포함 검사
list O(1)/O(n) O(1)/O(n) O(1) O(n)
dict O(1) O(1) O(1) O(1)
set O(1) O(1) - O(1)
tuple - - O(1) O(n)
str - - O(1) O(n)

 


마무리: 어떤 자료형을 써야 할까?

  • 순서가 중요하고 자주 바꿔야 한다 → list
  • 빠르게 찾고, 키-값 형태로 저장하고 싶다 → dict
  • 중복 없이 저장하고 빠르게 확인하고 싶다 → set
  • 수정 불가능한 고정된 값 → tuple
  • 글자 다루기 → str

자료형을 잘 고르면 코드가 더 빨라지고, 훨씬 효율적입니다!
앞으로는 리스트만 쓰지 말고, 목적에 맞는 자료형을 고르는 습관을 가져보세요

댓글