List자료형은 순서대로 저장하는 시퀀스이자 변경 가능한 목록(Mutable List)를 말한다. 입력 순서가 유지되며, 내부적으로는 동적 배열로 구현되어 있다. Python에서 배열의 역할을 하는 자료형이다.


List의 주요 특징

  • Stack과 Queue를 동시에 구현할 수 있다.
  • Stack과 Queue에서 사용 가능한 모든 연산을 함께 제공
  • O(1)의 연산속도를 가지는 다양한 연산이 있다.(append(), Pop() 등)
  • 요소를 삭제하거나 큐의 연산이기도 한 첫 번째 요소를 추출하는 경우(pop(0)) 시간복도는 O(n)이다.
  • Linked List에 대한 포인트 목록을 배열 형태로 관리하고 있는 것과 같음(배열 + 연결 리스트)
  • 연결 리스트에 대한 포인터 목록을 관리하고 있기 때문에 다양한 타입이 동시에 사용될 수 있음([‘1’, ‘안녕’])


List의 주요 연산 시간복잡도 아래와 같다.


주요 연산 시간복잡도


순서 연산 예시 시간 복잡도 설명
1 Index a[i] O(1) 인덱스로 값 찾기
2 Store a[i] = 0 O(1) 인덱스로 데이터 저장
3 Length len(a) O(1) 리스트 길이
4 Append a.append(5) O(1) 리스드 뒤에 데이터 저장
5 Pop a.pop() O(1) 가장 뒤의 데이터 pop
6 Clear a.clear() O(1) a = []
7 Slice a[a:b] O(k) 슬라이싱되는 요소들 수 만큼 비례
8 Extend a.extend(…) O(k) 확장되는 길이만큼
9 Construction list(…) O(k) 리스트 길이만큼
10 check ==, != a1 == a2 O(N) 전체 리스트가 동일한지 확인
11 Insert a[a:b] = … O(N) 데이터 삽입
12 Delete del a[i] O(N) 데이터 삭제ㅣ
13 Containment x in/not in a O(N) 포함 여부 확인
14 Copy a.copy() O(N) 복제
15 Remove a.remove(…) O(N) 제거
16 Pop a.pop(i) O(N) 제거된 값 이후를 전부 한칸씩 당겨줘야함
17 Extreme value min(a)/max(a) O(N) 전체 데이터를 확인해야함
18 Reverse a.reverse() O(N) 뒤집기
19 Iteration for v in a: O(N) 전체 데이터 확인하므로
20 Sort a.sort() O(N Log N) 파이썬 기본 정렬 알고리즘(Timsort 알고리즘)
21 Multiply k*a O(k N) 리스트의 곱은 리스트 개수 늘어남