본문 바로가기

CS/Data Structure

파이썬의 자료 구조

자료구조 : 메모리상에서 DB에 저장하기 위해서 자료구조를 사용합니다.

가장 기본적인 자료 형태

위의 이미지는 구현의 관점에서 본 파이썬의 자료형입니다.

구현과 형태에 따라 자료 구조를 분류합니다.

구현

  • 배열 : 순서가 잘 변하지 않으며 (시퀸스) 반복이 가능 해야 한다(이터레이터)

  • 링크드 리스트: 하나의 노드에 하나의 헤더를 가진 단위로 서로의 순서를 사용하는 것

  • 해시 테이블 : 해시 값에 따라 인덱싱 된다.

형태

  • 선형

  • 스텍 : LIFO의 형태

    • 큐 : FIFO의 형태
    • 덱 : FIFO의 형태가 앞뒤로 다되는것
  • 비선형

    • 트리
      • 이진 트리
      • Btree
    • 그래프
      • 방향성 유무에 따라서

자료구조를 평가 하는법

  • O() 시간 복잡도 = 최악의 알고리즘 계산 속도

배열과 링크드리스트 구별

  • 배열의 특징

  • 인덱싱을 활용하면 접근속도는 O(1)입니다.

  • 링크드 리스트의 특징

    • 전체 1번 순회를 해야 하므로 접근 속도는 O(n)

튜플이 쓰이는 이유:

    • 리스트 자체의 디폴트값 크기 가 크므로
    • 상대적으로 튜플자체가 가볍다
    • 클래스를 굳이 안만들더라도 리스트내에 클래스의 속성의 성질을 쓸 수 있습니다.
    • 네임드 튜플로 클래스 변수먕(키) 선언도 가능하다.

중복된 리스트를 셋으로 중복을 제거하는 과정

    • 2,1,1의 경우
    • 2의 해쉬값을 구한후 2에 다시저장합니다.
    • 1의 해쉬값을 구한후 1에 다시 저장합니다.
    • 1의 해쉬값을 구한후 1을 덮어 씌웁니다.