본문 바로가기
STUDY/자료구조

[Python] List

by 램플릿 2025. 4. 8.
개념

리스트

순서를 가지고 데이터를 저장하는 선형 자료구조.

빈 공간을 허용하지 않는 자료구조이므로, 원소 제거 시 뒤쪽의 원소들이 앞당겨지고 삽입 시에는 뒤쪽의 원소들이 뒤로 밀리게 된다.

따라서, 원소 삽입/삭제 시 재정렬로 인한 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]