a = []
a = list()
1. 리스트 더하기
a = [1, 2, 3] b = [4, 5, 6] a + b [1, 2, 3, 4, 5, 6]
2. 리스트 반복하기
a = [1, 2, 3] a * 3 [1, 2, 3, 1, 2, 3, 1, 2, 3]
1. a[i]
시간 복잡도 :O(1)
인덱스 i의 요소를 가져온다.
2. a[i:j]
시간 복잡도 :O(k)
i부터 j까지 슬라이스의 길이 만큼인 k개의 요소를 가져온다. 이 경우 객체 k개에 대한 조회가 필요하므로 O(k)이다.
3. a[i:j:k]
인덱스 i부터 j까지의 요소를 k 간격으로 추출한다.
4. a[::-1]
리스트를 거꾸로 뒤집는다.
1. len(a)
시간 복잡도 :O(1)
전체 요소의 개수를 리턴한다.
2. elem in a
시간 복잡도 :O(n)
elem 요소가 존재하는지 확인한다. 처음부터 순차 탐색하므로 n만큼 시간이 소요된다.
3. a.count(elem)
시간 복잡도 :O(n)
elem 요소의 개수를 리턴한다.
4. a.index(elem)
시간 복잡도 :O(n)
elem 요소의 인덱스를 리턴한다.
5. a.append(elem)
시간 복잡도 :O(1)
리스트 마지막에 elem 요소를 추가한다.
6. a.pop()
시간 복잡도 :O(1)
리스트 마지막 요소를 추출한다. 스택의 연산이다.
7. a.pop(0)
시간 복잡도 :O(n)
리스트 첫번째 요소를 추출한다. 큐의 연산이다. 이 경우 전체 복사가 필요하므로 O(n)이다. 나중에 다시 살펴보겠지만 큐의 연산을 주로 사용한다면 리스트보다는 O(1)에 가능한 데크(deque)를 권장한다.
8. del a[i]
시간 복잡도 :O(n)
i에 따라 다르다. 최악의 경우 O(n)이다.
9. a.sort()
시간 복잡도 :O(nlogn)
팀소트를 이용하여 정렬한다. 최선의 경우 O(n)에도 실행될 수 있다.
10. min(a), max(a)
시간 복잡도 :O(n)
최솟값/최대값을 계산하기 위해서는 전체를 선형 탐색해야 한다.
11. a.reverse()
시간 복잡도 :O(n)
리스트를 뒤집는다.
ex.
a = [1, 2, 3, 4] try: print(a[9]) except IndexError: print("존재하지 않는 인덱스") >> 존재하지 않는 인덱스
a = [1, 2, 3, 4] a.insert(3, 5) >> a [1, 2, 3, 5, 4]
del
과 pop
은 해당 인덱스에 있는 값을 삭제한다.remove
는 해당 값을 찾아 삭제한다.ex.
a = [1, 2, 3, 4, 5, 6] >> del a[0] [2, 3, 4, 5, 6] >> a.pop(2) [2, 3, 5, 6] >> a.remove(6) [2, 3, 5]