욤미의 개발일지

[Python] 리스트 자료형 본문

Python

[Python] 리스트 자료형

욤미 2021. 6. 21. 18:06

[Python] 리스트 자료형

여러 개의 데이터를 연속적으로 담아 처리하기 위해 사용할 수 있으며, C나 자바와 같은 언어의 배열(array) 기능을 포함한다. 내부적으로는 연결 리스트 자료구조를 채택하고 있으며 C++의 STL vector와 유사하다. 리스트 대신 배열 혹은 테이블 이라고 부르기도 한다.

 

a = list() # 빈 리스트 선언1
a = [] # 빈 리스트 선언2

a = [0] * 10 # 모든 값이 0이고 크기가 10인 1차원 리스트 초기화

 

리스트 메서드

함수명 사용법 설명 시간 복잡도
append() 변수명.append() 원소를 하나 삽입할 때 O(1)
sort() 변수명.sort() / 변수명.sort(reverse=True) 기본 정렬 기능, 오름차순 정렬 / 내림차순 정렬 O(NlogN)
reverse() 변수명.revers() 원소의 순서를 모두 뒤집어 놓는다. O(N)
insert() 변수명.insert(삽입할 위치 인덱스, 삽입할 값) 특정 인덱스 위치에 원소를 삽입할 때 O(N)
count() 변수명.count(특정값) 리스트에서 특정한 값을 가지는 데이터의 개수를 셀 때 O(N)
remove() 변수명.remove(특정값) 특정한 값을 갖는 원소를 제거 (원소가 여러 개면 하나만 제거) O(N)

 

* insert(), append(), remove() 눈 여겨 보기

코테에서 insert()를 사용할 때 원소의 개수가 N개면, 시간복잡도는 O(N)이다. append()는 O(1)에 수행되는 반면, insert()는 느리다는 것을 알 수 있다. 중간에 원소를 삽입한 뒤에, 리스트의 원소 위치를 조정해줘야하기 때문이다. 따라서 insert()를 너무 많이쓰면 '시간초과'로 테스트를 통과하지 못할 수도 있다. remove()의 시간 복잡도도 insert()와 마찬가지로 O(N)이다.(리스트 중간에 있는 원소를 삭제한 뒤에, 리스트의 원소 위치를 조정해주어야 하기 때문에)

 

 

리스트 인덱싱(Indexing)

인덱스 값을 이용해 리스트의 특정한 원소에 접근하는 것을 말한다. 인덱스 값은 양의 정수와 음의 정수 모두를 사용할 수 있으며, 음의 정수를 넣으면 원소를 뒤에서 부터 탐색할 수 있다. 또한 인덱싱을 이용하여 특정 원소에 접근한 뒤에, 그 값을 바꿀 수 있다.

a = [1, 2, 3, 4, 5, 6]
print(a[-1]) # 6, 뒤에서 첫 번째 원소 출력

print(a[-3]) # 4, 뒤에서 세 번째 원소 출력

a[1] = 9 # 두 번째 원소 값 변경, 인덱스는 0부터 시작한다.
print(a) # [1, 9, 3, 4, 5, 6]

 

리스트 슬라이싱(Slicing)

리스트에서 연속적인 위치를 갖는 원소들을 가져오는 것이다. 대괄호 안에 콜론(:)을 넣어서 시작 인덱스와 끝 인덱스를 설정하여 사용할 수 있다. 이때 끝 인덱스의 경우 1을 뺀 값의 인덱스까지 처리되기 때문에 만약에 리스트 a에서 두 번째 원소부터 네 번째 원소까지 가져오고 싶다면 a[ 1 : 4 ]라고 작성해야 한다.

a = [1, 2, 3, 4, 5, 6]

# 두 번째 원소부터 네 번째 원소까지
print(a[1:4]) # [2, 3, 4]

 

 

Q. 특정한 값의 원소를 모두 제거하려면?

파이썬에서는 remove_all()과 같은 특정값을 가지는 모든 원소를 제거하는 함수가 없으므로 아래의 방법을 이용한다.

# a의 원소를 하나씩 확인하며 remove_set에 포함되어 있지 않을때만 리스트 변수인 result에 넣는다.
a = [1,2,3,4,5,5,5]
remove_set = {3,5}

result = [i for i in a if i not in remove_set]
#result = [1,2,4]

 

 

728x90

'Python' 카테고리의 다른 글

[Python] 2차원 리스트 90도 회전  (1) 2022.09.23
[Python] 2차원 리스트 - 인덱싱, 선언 방법  (0) 2021.08.09
[Python] 문자열 자료형  (0) 2021.08.09
[Python] Packing & Unpacking  (0) 2021.07.31
[Python] 수 자료형  (0) 2021.05.18
Comments