22.10.06 - 사이드

LaMelo·2022년 10월 6일
0

jupyter

목록 보기
7/29
post-thumbnail

22.10.06

메소드 : 클래스 내부에 들어있는 함수

함수 :

.append() - 매우 중요 / 추가할 경우 항상 인덱스 번호 맨 마지막에 붙음
: 맨뒤 하나의 인덱스에 추가하는 모든 자료가 다 들어감.(특이한 점)
즉 리스트 안에 리스트를 만드는 격

.insert() - 몇 번 인덱스에 아이템을 추가하겠다는 의미 : 원하는 위치에 삽입 가능

인덱싱은 append / 슬라이싱은 extend

Q :
진입구간과 나가는 구간이 다른 경로를 사용한다.(선입선출)
데이터를 선입선출 구조로 유지하는 데이터 형
먼저 온 데이터가 먼저 나갈 수 있다.
데이터 입력 행위 : Enqueue (인큐)
데이터 출력 행위 : dequeue (디큐)

stack : 스택이란? (pop() 관련)
프링글스 통을 생각하면 편하다 -> 먼저 들어간 것이 제일 나중에 나온다.
진입구간과 나가는 구간이 같은 경로를 사용한다. (후입선출)
데이터를 후입선출 구조로 유지하는 데이터형
데이터 입력 행위 : push
데이터 출력 행위 : pop

리스트 복사하기

구조 => 파이썬 튜터에서 시각적으로 잘 표현되어 있다.

코드(시스템)
스택 / 힙

코드 시스템은 사용자가 통제할 수 없다. 조건에 맞춰야 작동

: 이와 반대로 컨트롤 할 수 있는 영역이 있다. (스택, 힙)

  • 스택 : 사용자가 많이 쓰는 영역, 용량이 작다, 변수를 저장할 수 있다.
    스택이 용량이 작은 이유 - 자주 쓰는 데이터를 저장하는 공간이다.
    공간이 넓게되면 검색속도가 느려질 수 밖에 없기 때문에 용량이 작은 특징이 있다.

  • 힙 : 사용자가 많이 쓰지 않는 영역, 용량이 크다,
    공간이 넓고 큰 대신 검색속도가 느린 편이다.

그런데 파이썬에서 리스트나 자료 기입에 제한이 없다.
그래서 스택에 허용용량 이상의 리스트나 자료를 올리게 되면 스택이 터지게 된다.
이를 [스택오버플로우]라고 한다.

그래서 변수에 자료를 하나씩만 저장하게끔 규칙이 생김

1) 기본형 변수
변수에 단일 데이터를 넣는 경우 -> 그냥 스택에 변수 및 데이터를 저장하면 된다.

2) 참조형 변수
예를 들어 리스트를 저장하는 경우
y = [1, 2, 3]
y에 데이터 3개 저장한 상태이고 append 등으로 데이터를 무한히 추가할 수 있는 상태이다.

그래서 리스트류의 변수들은 힙에 저장하게 된다.

이 경우 스택에는 y 변수에 힙에 저장해놨던 자료들의 주소만 저장하게 된다.(ex>인덱스 번호 100번부터 저장되어 있다면 주소만)
참조형 변수의 출력 과정은 스택에 저장된 y 변수의 주소를 보고 힙으로 찾아들어가 자료를 검색하게 된다.
이런 경우 힙에 모든 것을 저장 후 통째로 검색하는 것보다 훨씬 빠른 효율을 보이게 된다.
즉 스택 상에 저장해 놓은 주소들을 참조하여 검색을 하게 되는 것인데
그래서 이런 종류의 데이터들을 참조형 변수라고 부른다.

  • 작업순서는 1-2-3-4
    • ex> (2번 작업) a = [1, 2, 3, 4, 5] (1번 작업)
    • (4번작업)b = a(3번 작업)

스택 안에서 일어나는 작업
: (2) a -> 100번지 주소 저장 (3)b = a에서 a는 자료값이 아닌 100번지로 인식(힙에는 자료값을 저장하고 스택에는 번지수를 저장)
(4) b -> 100번지로 변환

힙 안에서 일어나는 작업
: (1) 100번지 : 1, 2, 3, 4, 5 저장 |

-> 주어진 자료의 주소 번지는 연산에 쓰이지 않는다.
a[0] = 10 의 의미는 100번지의 인덱스번호 0의 값을 10으로 바꾸겠다.

  1. 얕은 복사
    b = a (스택 단위에서 일어나는 복사 : 얕은 복사 - 원본을 공유)

  2. 깊은 복사
    (1) .copy() : 힙에 위치한 원본 자료와 같은 내용을 임의의 주소에 복사하는 명령어
    c = a.copy() : 100번지의 데이터를 임의의 주소에 복사하여 새주소 c(200번지)로 연결하라.
    (2) d = list(c) : 200번지에 존재하는 아이템을 새로운 창고(300번지)에 리스트화하라

int, float 도 크기가 다 다르다.
int는 4bite : 번지수를 4개를 차지한다.
float은 8bite :번지수를 8개를 차지한다.
힙 내에서 저장공간을 차지함.

중괄호 사용 : 집합, 딕셔너리

딕셔너리 - 웹에서 자료를 주고 받을 때 json 형식이 대세가 됨에 따라
딕셔너리 역시 각광받고 있다.

profile
가즈아~

0개의 댓글