리스트(List)
: 순서대로 저장하는 시퀀스. 변경 가능한 목록(Mutable List)
- 리스트 선언
a = list(a) a = []
- 인덱스를 지정해 요소 추가
# 3번째 인덱스에 5를 삽입 a.insert(3,5)
- 슬라이싱
#인덱스 1,2,3의 값 a[1:4] #인덱스 1,3의 값 (세 번째 파라미터: 단계) a[1:4:2]
- 요소 삭제
1. 인덱스로 삭제하기>>> a [1, 2, 3, 5, 4, '안녕', True] >> del a[1] >>> a [1, 3, 5, 4, '안녕', True]
2. 값으로 삭제하기
>>> a [1, 3, 5, 4, '안녕', True] >>> a.remove(3) >>> a [1, 5, 4, '안녕', True]
- len(a): O(1)
- a[i]: O(1)
- a[i:j]: O(k)
i부터 j까지 슬라이스의 길이만큼인 k개의 요소를 가져온다.- elem in a: O(n)
- a.count(elem): O(n)
elem 요소의 개수를 리턴한다.- a.index(elem): O(n)
elem 요소의 인덱스를 리턴한다.- a.append(elem): O(1)
리스트 마지막에 elem 요소를 추가한다.- a.pop(): O(1)
리스트 마지막 요소를 추출한다. Stack의 연산이다.- a.pop(0): O(n)
리스트 첫번째 요소를 추출한다. Queue의 연산이다.
큐의 연산을 주로 사용하는 경우, 리스트보다는 O(1)에 가능한 데크(deque)를 권장한다.- del a[i]: O(n)
i에 따라 다르다. 최악의 경우 O(n)이다.- a.sort(): O(nlogn)
정렬한다. 팀소트(Timsort)를 사용하며, 최선의 경우 O(n)에도 실행될 수 있다.- min(a), max(a): O(n)
- a.reverse(): O(n)
⌜파이썬 알고리즘 인터뷰⌟ 5장_리스트, 딕셔너리