리스트
리스트는 여러 개의 데이터를 연속적으로 담아 처리하기 위해 사용할 수 있다.
리스트 만들기
1. 초기화와 생성을 동시에
a = [1, 2, 3, 4]
2. 빈 리스트 생성
a = list()
b = []
리스트 슬라이싱
- 연속적인 위치를 갖는 원소들을 가져와야 할 때 사용할 수 있다.
- 대괄호 안에 콜론(:)을 넣어서 시작인덱스와 끝 인덱스를 설정할 수 있다.
a = [1, 2, 3, 4, 5, 6]
print(a[1 : 4])
- 결과 : [2, 3, 4]
-> 시작 인덱스부터 끝 인덱스의 -1까지 출력
리스트 길이구하기
a = [1, 2, 3, 4, 5]
len(a)
리스트 컴프리헨션
- 리스트를 초기화하는 방법 중 하나
- 대괄호([]) 안에 조건문과 반복문을 넣는 방식으로 리스트를 초기화
#1부터 9까지의 수의 제곱 값을 포함하는 리스트
array = [ i * i for i in range(1, 10) ]
# N * M 크기의 2차원 리스트 초기화
n = 3
m = 4
array = [[0] * m for _ in range(n)]
for i in range(len(array)) :
for j in range(len(array[i])) :
print(array[i][j], end=" ")
print()
- 결과
리스트 관련 메서드 시간 복잡도 정리
append() | O(1) |
sort() | O(NlogN) |
reverse() | O(N) |
insert() | O(N) |
count() | O(N) |
remove() | O(N) |
- insert() 함수를 남발하면 시간 초과 가능성이 👆
리스트에서 특정한 값의 원소를 모두 지우려면?
a = [1, 2, 3, 4, 5, 5, 5]
remove_set = {3, 5}
# remove_set에 포함되지 않은 값만 저장
result = [ i for i in a if i not in remove_set ]
튜플과 리스트의 차이점?
- 리스트는 []를 사용 / 튜플은 ()을 사용
- 튜플은 리스트와 달리 한 번 생성되면 값을 바꿀 수 없다.
튜플 생성 및 초기화
a = ()
b = (1, )
c = ('a', 'b')
d = 1, 2, 3, 4
- 1개의 요소만을 가질 때 요소 뒤에 콤마(,)를 반드시 붙여야 한다.
- 괄호를 생략하고 작성할 수 있다.
튜플 자료형의 사용처
- 그래프 알고리즘 구현할 때 자주 사용
- 다익스트라 최단 경로 알고리즘처럼 최단 경로를 찾아주는 알고리즘의 내부에서는 우선순위 큐를 이용
- 해당 알고리즘에서 우선순위 큐에 한 번 들어간 값은 변경되지 않는다.
사전 자료형이란?
- 키(key)와 값(value)으로 구성된 자료형
- 변경 불가능한 데이터를 키로 사용할 수 있다.
- 내부적으로 해시 테이블을 이용하므로 기본적으로 데이터의 검색 및 수정에 있어서 O(1)의 시간 복잡도를 갖는다.
- 사용 방법
a = {'name' : 'determination', 'age' : '10'}
사전 자료형의 키를 리스트로 만들기
a = {'name' : 'determination', 'age' : '10'}
- print(list(a.keys()))
- print(a.key())
- dict_keys 객체는 기본적인 반복 구문(예 : for문)에 사용할 수 있다.
- dict_keys 객체는 리스트 고유의 append, insert, pop 등의 함수를 사용할 수 없다.
사전 자료형의 value를 리스트로 만들기
a = {'name' : 'determination', 'age' : '10'}
사전 자료형의 쌍 얻기/지우기
- 얻기
a.items()
- 지우기
a.clear()
집합 자료형의 특징
- 중복을 허용하지 않는다.
- 순서가 없다.
- 순서가 없기 때문에 인덱싱을 제공하지 않는다.
- 집합 자료형에서 특정 원소가 존재하는지 검사하는 연산의 시간 복잡도는 O(1)이다.
집합 자료형의 합집합/교집합/차집합
a = set([1, 2, 3, 4])
b = set([3, 4, 5, 6])
#합집합
print(a|b)
#교집합
print(a&b)
#차집합
print(a-b)
- 결과
출처 : 점프 투 파이썬, 이것이 코딩 테스트다(나동빈)
'내가 공부하려고 올리는 > 알고리즘' 카테고리의 다른 글
백준 알고리즘 - 그리디 알고리즘(1931번/1026번/1541번/2217번/13305번/10610번) (0) | 2022.04.25 |
---|---|
모두를 위한 컴퓨터 과학(CS50) - 정렬 알고리즘 (0) | 2022.04.23 |
모두를 위한 컴퓨터 과학(CS50) - 검색 알고리즘 (0) | 2022.04.21 |
[코드업] 기초 100 - Python(파이썬) 리뷰 (0) | 2022.04.20 |
알고리즘 - 복잡도 (0) | 2021.10.04 |
댓글