"4. 자료구조"의 두 판 사이의 차이
둘러보기로 가기
검색하러 가기
(→형태) |
|||
13번째 줄: | 13번째 줄: | ||
|순서가 있는 객체의 집합. | |순서가 있는 객체의 집합. | ||
대괄호로 구분 [] | 대괄호로 구분 [] | ||
− | |리스트명=[1,2,3,4,5,...] | + | |리스트명 = [1,2,3,4,5,...] |
|- | |- | ||
|튜플 | |튜플 | ||
20번째 줄: | 20번째 줄: | ||
데이터의 불변성이 중요할 경우 사용. | 데이터의 불변성이 중요할 경우 사용. | ||
− | |튜플명=(1,2,3,4,5, ...) | + | |튜플명 = (1,2,3,4,5, ...) |
|- | |- | ||
|딕셔너리 | |딕셔너리 | ||
|순서가 없는 객체의 집합. | |순서가 없는 객체의 집합. | ||
인덱스가 아닌, 키워드와 1대1 대응을 시켜둔 자료구조. | 인덱스가 아닌, 키워드와 1대1 대응을 시켜둔 자료구조. | ||
− | |사전명={"key1":value, "key2":value, ...} | + | |사전명 = {"key1":value, "key2":value, ...} |
|- | |- | ||
|집합 | |집합 | ||
41번째 줄: | 41번째 줄: | ||
|- | |- | ||
|정의 | |정의 | ||
− | |리스트명=[데이터] | + | |리스트명 = [데이터] |
− | |튜플명=(데이터) | + | |튜플명 = (데이터) |
− | |<code>사전명={"key1":value, "key2":value, ...}</code> | + | |<code>사전명 = {"key1":value, "key2":value, ...}</code> |
|- | |- | ||
|자료접근 | |자료접근 | ||
|리스트명[인덱스] | |리스트명[인덱스] | ||
0부터 시작한다. | 0부터 시작한다. | ||
+ | |||
+ | |||
+ | |||
136번째 줄: | 139번째 줄: | ||
|구조변경 | |구조변경 | ||
|list(자료구조) 형태로 다른 자료구조를 리스트로 만들 수 있다. | |list(자료구조) 형태로 다른 자료구조를 리스트로 만들 수 있다. | ||
− | | | + | |tuple(자료구조) |
| | | | ||
|} | |} | ||
194번째 줄: | 197번째 줄: | ||
|- | |- | ||
|두 사전을 합치고 싶다. | |두 사전을 합치고 싶다. | ||
− | | | + | | |
|뒤의 내용을 앞의 사전에 덮어씌운다.(키가 겹치는 경우, 키가 없다면 추가한다.) | |뒤의 내용을 앞의 사전에 덮어씌운다.(키가 겹치는 경우, 키가 없다면 추가한다.) | ||
|} | |} | ||
==집합 관련== | ==집합 관련== | ||
− | 정의하려면 <code>집합명={}</code> 이 아닌, <code>집합명=set()</code> 형태로 정의해야 한다. 앞처럼 하면 빈 사전이 생성된다. | + | 정의하려면 <code>집합명 = {}</code> 이 아닌, <code>집합명 = set()</code> 형태로 정의해야 한다. 앞처럼 하면 빈 사전이 생성된다. |
{| class="wikitable" | {| class="wikitable" | ||
!의도 | !의도 |
2021년 4월 6일 (화) 20:20 판
자료구조에 대한 문서.
1 개요
여러 개의 자료형들을 담기 위한 구조. 반복자료형이라 부르기도 한다.
1.1 형태
자료구조 | 설명 | 예시 |
---|---|---|
리스트 | 순서가 있는 객체의 집합.
대괄호로 구분 [] |
리스트명 = [1,2,3,4,5,...] |
튜플 | 순서가 있는 객체의 집합.
리스트와 달리 변경이 불가능한 구조이다. 대신 리스트보다 빠르다. 데이터의 불변성이 중요할 경우 사용. |
튜플명 = (1,2,3,4,5, ...) |
딕셔너리 | 순서가 없는 객체의 집합.
인덱스가 아닌, 키워드와 1대1 대응을 시켜둔 자료구조. |
사전명 = {"key1":value, "key2":value, ...} |
집합 | 중복이 없는 원소집합. 중복된 걸 생성해도 하나만 존재한다.
원소가 순서대로 저장되는 것이 아닌, 오름차순으로 재배치된다. |
집합명 = {'a', 'b', ...} |
2 사용법
자료구조 안에 자료구조를 넣어 보다 높은 차원의 자료구조를 만들 수 있다.
리스트 | 튜플 | 딕셔너리 | |||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
정의 | 리스트명 = [데이터] | 튜플명 = (데이터) | 사전명 = {"key1":value, "key2":value, ...}
| ||||||||
자료접근 | 리스트명[인덱스]
0부터 시작한다.
리스트명[-1] 형태로 뒤에서부터 접근 가능. 여러 차원으로 되어있는 경우, 리스트명[1][2][0] 형태로 접근 가능 |
리스트와 동일 | 키에 접근하면 된다.
| ||||||||
여러
자료접근 |
문자열의 슬라이싱과 동일하다.
리스트명[시작번호:끝번호] #시작번호와 같은 것부터 끝번호보다 작은 것까지 가져온다. 리스트명[ :5], 리스트명[-1: ] 형태로 사용도 가능. |
리스트와 동일 | |||||||||
자료찾기 | 찾을 자료가 어디에 있는지 인덱스번호를 얻는다.
|
||||||||||
자료추가 | 다음의 방법으로 추가한다.
|
튜플에선 불가 | 키에 해당하는 데이터는 다음과 같이 넣을 수 있다.
사전명["키"]=데이터 | ||||||||
자료수정 | 해당 데이터 위치에 데이터를 대입하면 된다.
|
튜플에선 불가 | 해당하는 키에 대입하면 수정된다.
사전명["키"]=데이터 | ||||||||
자료삭제 | 인덱스를 사용하느냐, 값을 사용하느냐에 따라 두 가지로 나눈다.
|
튜플에선 불가 | |||||||||
구조변경 | list(자료구조) 형태로 다른 자료구조를 리스트로 만들 수 있다. | tuple(자료구조) |
3 자료파악
의도 | 설명 |
---|---|
자료의 경우, 그 길이를 파악하고,
자료구조의 경우, 자료의 개수를 파악한다. |
len(데이터) |
4 자료조작
4.1 리스트 관련
튜플에선 수정이 불가능해 쓸 수 없고, 딕셔너리에선 의미없는 방식이다.
의도 | 설명 | |
---|---|---|
오름차순으로 정렬한다.(내림차순은 리버스함수를 이용) | 리스트.sort() | |
리스트의 값을 역순으로 뒤집는다. | 리스트.reverse() |
리스트명.pop(자료) | 데이터를 사용하고 지운다. |
4.2 딕셔너리 관련
4.2.1 데이터 추출
의도 | 방법 | 설명 |
---|---|---|
키 값만 뽑아오고 싶다. | 사전명.keys() | 키값들을 리스트로 얻어온다. |
자료값만 뽑아오고 싶다. | 사전명.values() | 자료값들을 리스트로 얻어온다. |
둘을 한 쌍으로 뽑아오고 싶다. | 사전명.items() | 자료값 쌍을 2차원 리스트로 얻어온다. |
4.2.2 딕셔너리 조작
의도 | 방법 | 설명 |
---|---|---|
두 사전을 합치고 싶다. | 뒤의 내용을 앞의 사전에 덮어씌운다.(키가 겹치는 경우, 키가 없다면 추가한다.) |
4.3 집합 관련
정의하려면 집합명 = {}
이 아닌, 집합명 = set()
형태로 정의해야 한다. 앞처럼 하면 빈 사전이 생성된다.
의도 | 방법 | 설명 |
---|---|---|
교집합 찾기 | 집합명1 & 집합명2 | 두 집합에 동시에 들어간 원소들만 얻어진다. |
합집합 찾기 | 집합명1 | 집합명2 | 파이프연산자를 통해 두 집합의 합집합을 구한다. |
차집합 | 집합명1 - 집합명2 | 집합1에서의 집합2의 차집합을 구한다.(교집합을 빼는 것과 동일) |