개념
리스트
순서를 가지고 데이터를 저장하는 선형 자료구조.
빈 공간을 허용하지 않는 자료구조이므로, 원소 제거 시 뒤쪽의 원소들이 앞당겨지고 삽입 시에는 뒤쪽의 원소들이 뒤로 밀리게 된다.
따라서, 원소 삽입/삭제 시 재정렬로 인한 O(n)의 시간복잡도 증가에 주의하여야 한다.
리스트 선언
a = list() - a라는 리스트를 선언.
a = [1, 2, 3] - a라는 리스트를 선언하고 각 원소를 1,2,3으로 정의.
a = [[1, 1, 1], [2, 2, 2], [3, 3, 3]] - 2차원 리스트
(좀 더 직관적으로 나타내기 위해서는 아래처럼 작성)
a = [
[1,1,1],
[2,2,2],
[3,3,3]
]
원소 업데이트
a[0] = 3 - 0번째 인덱스의 원소를 3으로 수정한다.
a[0][1] = 3 - 0번째 리스트의 1번째 인덱스의 원소를 3으로 수정한다.
원소 추가
a.append(1) - 리스트의 맨 뒤에 1이라는 데이터를 추가한다.
a.insert(i,1) - 리스트의 i번째 인덱스의 위치에 1이라는 데이터를 삽입한다.
원소 제거
a.pop() - 리스트의 맨 뒤에 있는 원소를 제거한다.
a.pop(i) - 리스트의 i번째 인덱스의 위치에 있는 원소를 제거한다.
a.remove(3) - 3이라는 데이터가 있다면 그 원소를 제거한다.
시간 복잡도가 O(n)인 리스트 기능들
a[i:j] - 리스트 슬라이싱 (i번째 인덱스 요소부터 j-1번째 인덱스 요소까지 선택하여 슬라이싱한다.)
a.extend(b) - 리스트+리스트 (리스트 a의 뒤에 리스트 b의 모든 요소를 추가한다.)
list(a) - 리스트 할당 (순차형 객체, 예를 들면 튜플,문자열 등의 오브젝트 a를 리스트의 형태로 변환하여 반환한다.)
a == b / a != b - 리스트 비교 (a와 b를 비교하는 연산자로, True 또는 False 를 반환한다.)
a[i:j] = b - 값 범위 할당 (슬라이싱을 이용해 범위를 지정한 후, 그 범위의 모든 요소를 b로 대체한다.
# a[i:j] = b 예시
a = [1, 2, 3, 4, 5]
a[1:4] = [3] # 슬라이싱된 [2,3,4]을 3으로 대체
print(a) # [1, 3, 5]
# 만약 b가 반복가능한 객체라면(튜플,문자열 등)
a = [1, 2, 3, 4, 5]
b = [6, 7, 8]
a[1:3] = b
print(a) # [1, 6, 7, 8, 4, 5]
'STUDY > 자료구조' 카테고리의 다른 글
[Python] Linked List (0) | 2025.04.09 |
---|---|
[Python] Stack과 Queue (0) | 2025.04.02 |
C# 자료구조 :: 레드블랙트리 (0) | 2024.06.28 |
C# 자료구조 :: 링크드리스트, 더블링크드리스트 직접 작성해보기 (0) | 2024.06.26 |
C# 자료구조 :: 선형 리스트(배열, 스택, 큐) (0) | 2024.06.25 |