인덱싱(Indexing) - 인덱스 값을 입력하여 리스트의 특정한 원소에 접근하는 것
슬라이싱(Slicing) - 리스트에서 연속적인 위치를 갖는 원소들을 가져올 때 사용하는 기능.
a = [1,2,3,4,5,6,7]
print(a[1:4])
# RESULT
[2,3,4]
슬라이싱 구동 방법.
리스트 관련 기타 메서드
메서드 명 | 사용법 | 설명 | 시간 복잡도 |
append() | 변수명.append() | 리스트에 원소를 하나 삽입할때 사용 | O(1) |
sort() | 변수명.sort(), .sort(reverse= True) | 1. 오름차순 정렬 2. 내림차순 정렬 |
O(NlogN) |
reverse() | 변수명.reverse() | 리스트의 원소 순서를 모두 뒤집어 놓음 | O(N) |
insert() | 변수명.insert(삽입할 위치 인덱스, 삽입할 값) | 특정한 인덱스 위치에 원소를 삽입할때 사용 | O(N) |
count() | 변수명.count(특정 값) | 리스트에서 특정한 값을 가지는 데이터의 개수를 셀때 사용 | O(N) |
remove() | 변수명.remove(특정 값) | 특정한 값을갖는 원소를 제거하는데, 값을 가진 원소가 여러개면 하나만 제거 | O(N) |
파이썬 append() 함수는 O(1)인데 반해 insert()는 동작이 느리다.
중간에 원소를 삽입한 뒤에, 리스트의 원소 위치를 조정해 줘야 하기 때문이다. 따라서 이 함수를 남발하면 '시간초과'로 통과 못할수도 있다.
remove() 함수는 하나만 삭제가 가능하다. 그럼 몇개 단위로 삭제를 하려면 어떻게 하면 될까?
다른 언어에서는 remove_all() 과 같은 함수들이 있지만, 파이썬에는 존재하지 않는다.
다음과 같은 방법을 사용하면 좋다.
a = [1,2,3,4,5,5]
remove_set = {3,5}
# remove_set에 포함되지 않는 값만 저장
array = [i for i in a if i not in remove_set]
print(array)
아예 원하지 않는 숫자들을 저장해논뒤 그것만 입력 안시키게 하면 된다.
튜플 자료형
튜플은 한 번 선언된 값을 변경할 수 없다.
리스트는 대괄호를 이용하지만, 튜플은 소괄호를 이용한다.
튜플 자료형은 그래프 알고리즘을 구현할 때 자주 사용된다.
집합 자료형
집합 자료형은 중복을 허용하지 않는다. 또한 순서가 없다. 순서가 없기 때문에 인덱싱 값을 얻을 수 없다는 특징이 있다.
특히 '특정한 데이터가 이미 등장한 적이 있는지 여부'를 체크 할 때 매우 효과적이다.
집합 자료형의 연산
기본적인 집합 자료형의 연산으로는 합집합, 교집합, 차집합 연산이 있다.
a = set([1,2,3,4,5])
b = set([3,4,5,6,7])
print("집합 자료형 연산")
print(a | b) # 합집합
print(a & b) # 교집합
print(a - b) # 차집합
집합 자료형 관련 함수
data = set([1,2,3])
print(data)
# 새로운 원소 추가
data.add(4)
print(data)
# 새로운 원소 여러개 추가
data.update([5,6])
print(data)
# 특정한 값을 갖는 원소 삭제
data.remove(3)
print(data)
이때 add(), remove() 함수는 모두 시간 복잡도가 O(1)이다.
'Algorithm > 이것이 취업을 위한 코딩테스트다' 카테고리의 다른 글
TIL - 2021.05.27 (0) | 2021.05.27 |
---|---|
TIL - 2021.05.26 (0) | 2021.05.26 |
TIL - 2021.05.24 (0) | 2021.05.24 |
자주 접할 수 있는 시간 복잡도 (0) | 2021.03.13 |
댓글