바뀜

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

둘러보기 메뉴