바뀜

둘러보기로 가기 검색하러 가기
2,552 바이트 추가됨 ,  2023년 1월 17일 (화) 08:27
잔글
1번째 줄: 1번째 줄:  
자료구조에 대한 문서.
 
자료구조에 대한 문서.
 +
 +
<youtube>https://www.youtube.com/watch?v=k34COoOs9mc</youtube>
    
== 개요 ==
 
== 개요 ==
13번째 줄: 15번째 줄:  
|순서가 있는 객체의 집합.
 
|순서가 있는 객체의 집합.
 
대괄호로 구분 []
 
대괄호로 구분 []
|리스트명=[1,2,3,4,5,...]
+
 
 +
배열이라고도 한다.
 +
|리스트명 = [1,2,3,4,5,...]
 +
이차원배열 = [[1,2,3,4], [3,4,5,6]]
 
|-
 
|-
 
|튜플
 
|튜플
20번째 줄: 25번째 줄:     
데이터의 불변성이 중요할 경우 사용.
 
데이터의 불변성이 중요할 경우 사용.
|튜플명=(1,2,3,4,5, ...)
+
|튜플명 = (1,2,3,4,5, ...)
 
|-
 
|-
 
|딕셔너리
 
|딕셔너리
 
|순서가 없는 객체의 집합.
 
|순서가 없는 객체의 집합.
 
인덱스가 아닌, 키워드와 1대1 대응을 시켜둔 자료구조.
 
인덱스가 아닌, 키워드와 1대1 대응을 시켜둔 자료구조.
|사전명={"key1":value, "key2":value, ...}
+
|사전명 = {"key1":value, "key2":value, ...}
 
|-
 
|-
 
|집합
 
|집합
41번째 줄: 46번째 줄:  
|-
 
|-
 
|정의
 
|정의
|리스트명=[데이터]
+
|리스트명 = [데이터]
|튜플명=(데이터)
+
|튜플명 = (데이터)
|<code>사전명={"key1":value, "key2":value, ...}</code>
+
|<code>사전명 = {"key1":value, "key2":value, ...}</code>
 
|-
 
|-
 
|자료접근
 
|자료접근
 
|리스트명[인덱스]
 
|리스트명[인덱스]
 
0부터 시작한다.
 
0부터 시작한다.
 +
 +
 +
      74번째 줄: 82번째 줄:  
<nowiki>리스트명[ :5], 리스트명[-1: ] 형태로 사용도 가능.</nowiki>
 
<nowiki>리스트명[ :5], 리스트명[-1: ] 형태로 사용도 가능.</nowiki>
 
|리스트와 동일
 
|리스트와 동일
|
+
|사전은 기본적으로 순서가 없지만, 생성 시 객체=OrderedDict() 으로 만들면 순서를 갖는다.
 +
순서 있는 사전을 사용하면 for문 등에서 순서대로 실행도 가능하다.
 
|-
 
|-
 
|자료찾기
 
|자료찾기
133번째 줄: 142번째 줄:  
|튜플에선 불가
 
|튜플에선 불가
 
|
 
|
 +
{| class="wikitable"
 +
!방법
 +
!설명
 +
|-
 +
|del 사전명[인덱스]
 +
|해당하는 데이터를 지운다.
 +
|}
 
|-
 
|-
 
|구조변경
 
|구조변경
 
|list(자료구조) 형태로 다른 자료구조를 리스트로 만들 수 있다.
 
|list(자료구조) 형태로 다른 자료구조를 리스트로 만들 수 있다.
|
+
|tuple(자료구조)
 
|
 
|
 
|}
 
|}
167번째 줄: 183번째 줄:  
|리스트명.pop(자료)
 
|리스트명.pop(자료)
 
|데이터를 사용하고 지운다.
 
|데이터를 사용하고 지운다.
 +
|}
 +
 +
=== list와 json ===
 +
다른 서비스나 서버로 데이터를 전달할 땐 json으로 변환하여 전달해야 한다.(각자 데이터를 처리하는 방식이 달라서..)
 +
{| class="wikitable"
 +
!의도
 +
!설명
 +
!방법
 +
|-
 +
|list를 json으로
 +
|사전을 json화 하는 것도 방법은 같다.
 +
|json.dumps(list)
 +
|-
 +
|json을 list로
 +
|사실, json은 사전 구조와 같다. 사전으로 받아진다.
 +
|json_data = json.loads(data)
 +
 +
예시) json_data['키']
 
|}
 
|}
 
==딕셔너리 관련==
 
==딕셔너리 관련==
186번째 줄: 220번째 줄:  
|사전명.items()
 
|사전명.items()
 
|자료값 쌍을 2차원 리스트로 얻어온다.
 
|자료값 쌍을 2차원 리스트로 얻어온다.
 +
딕셔너리에서 for문을 사용하려면 items()를 사용해 다음과 같이 돌려야 한다.<syntaxhighlight lang="python">
 +
for key, value in 사전명.items():
 +
    key + value... 등 조작.
 +
</syntaxhighlight>
 +
|-
 +
|최소값을 갖는 인덱스
 +
|인덱스 = min(사전, key=사전.get)
 +
|
 
|}
 
|}
 
====딕셔너리 조작====
 
====딕셔너리 조작====
194번째 줄: 236번째 줄:  
|-
 
|-
 
|두 사전을 합치고 싶다.
 
|두 사전을 합치고 싶다.
|사전명.update(덮을 사전명)
+
|{**사전명1, **사전명2}
 
|뒤의 내용을 앞의 사전에 덮어씌운다.(키가 겹치는 경우, 키가 없다면 추가한다.)
 
|뒤의 내용을 앞의 사전에 덮어씌운다.(키가 겹치는 경우, 키가 없다면 추가한다.)
 
|}
 
|}
 
==집합 관련==
 
==집합 관련==
정의하려면 <code>집합명={}</code> 이 아닌, <code>집합명=set()</code> 형태로 정의해야 한다. 앞처럼 하면 빈 사전이 생성된다.
+
정의하려면 <code>집합명 = {}</code> 이 아닌, <code>집합명 = set()</code> 형태로 정의해야 한다. 앞처럼 하면 빈 사전이 생성된다.
 
{| class="wikitable"
 
{| class="wikitable"
 
!의도
 
!의도
216번째 줄: 258번째 줄:  
|집합1에서의 집합2의 차집합을 구한다.(교집합을 빼는 것과 동일)
 
|집합1에서의 집합2의 차집합을 구한다.(교집합을 빼는 것과 동일)
 
|}
 
|}
 +
 +
== 공통 ==
 +
{| class="wikitable"
 +
!의도
 +
!설명
 +
!방법
 +
|-
 +
|새로운 리스트로 정렬
 +
|리스트, 문자열, 튜플 등 모두에서 사용 가능. 가존 반복자료형을 복사하여 새로운 리스트로 정렬한다.(기존 자료형은 유지.)
 +
|sorted(자료형)
 +
|-
 +
|자료구조 합치기
 +
|자료구조끼리 합친다.
 +
|자료구조.extend(자료구조)
 +
|-
 +
|자료구조 내의 데이터 데이터형 한번에 바꾸기
 +
|자료구조 안에 속한 데이터들의 데이터 type을 한번에 바꾼다.(for을 사용하기엔 번거로우니까.)
 +
|list(map(변수형, 자료구조))  # 리스트로 반환
 +
tuple(map(변수형, 자료구조))  # 튜플로 반환
 +
|}
 +
 +
= 궁금 =
 +
리스트를 +로 합하면 어떻게 될까?
 +
 +
= 관련에러 =
 +
 +
=== 'method' object is not subscriptable ===
 +
사전에서 get을 쓰면 get('user')로 써야 하는데, get['user'] 등 괄호를 잘못 쓴 경우 발생하는 에러이다.
 +
 +
=== django cannot unpack non-iterable object ===
 +
튜플, 리스트를 변수로 받을 때 변수의 갯수와 자료구조 안의 데이터 갯수가 다를 경우에 발생한다.
 +
 +
예를 들어 <code>변수1, 변수2 = (1)</code>에서 좌우의 데이터 갯수가 다른데, 이럴 때 발생한다. 이 경우엔 데이터 하나에 여러 변수를 대응시킬 때!
 
[[분류:기초]]
 
[[분류:기초]]

둘러보기 메뉴