Day_2 01. Python Data Structure

작성일

2 분 소요

Python Data Structure

1. 파이썬 기본 데이터 구조

  • 스택과 큐(stack & queue with list)
  • 튜플과 집합(tuple & set)
  • 사전(dictionary)
  • Collection 모듈

1.1 스택 (Stack)

  • 나중에 넣은 데이터를 먼저 반환하도록 설계된 메모리 구조
  • Last In First Out (LIFO)
  • Data의 입력을 Push, 출력을 Pop이라고 함
  • 리스트를 사용하여 스택 구조를 구현 가능
  • push를 append(), pop을 pop()를 사용
word = input("Input a word : ")
word_list = list(word)
for _ in range(len(word_list)):
    print(word_list.pop())
    print(word_list)
Input a word : price
e
['p', 'r', 'i', 'c']
c
['p', 'r', 'i']
i
['p', 'r']
r
['p']
p
[]

1.2 큐 (Queue)

  • 먼저 넣은 데이터를 먼저 반환하도록 설계된 메모리 구조
  • First In First Out (FIFO)
  • Stack과 반대되는 개념
  • 파이썬은 리스트를 사용하여 큐 구조를 활용
  • put를 append(), get을 pop(0)를 사용

1.3 튜플 (tuple)

  • 값의 변경이 불가능한 리스트
  • 선언시 “[]”가 아닌 “()”를 사용
  • 리스트의 연산, 인덱싱, 슬라이싱 등을 동일하게 사용
  • 사실상 리스트와 같다고 보면 됨

  • 왜 쓸까?
    • 프로그램을 작동하는 동안 변경되지 않는 데이터의 저장
      • ex) 학번, 이름, 우편번호 등등
    • 함수의 반환 값등 사용자의 실수에 의한 에러르 사전에 방지

1.4 집합 (set)

  • 값을 순서없이 저장, 중복 불허하는 자료형
  • set 객체 선언을 이용하여 객체 생성
  • set 함수
    • add()
    • remove()
    • update()
    • discard()
    • clear()
  • 수학에서 활용하는 다양한 집합연산 가능
    • union or
    • intersection or &
    • difference or -

1.5 사전 (dict)

  • 데이터를 저장 할 때는 구분 지을 수 있는 값을 함께 저장
  • 구분을 위한 데이터 고유 값을 Identifier 또는 Key 라고함
  • Key 값을 활용하여, 데이터 값(Value)를 관리함
  • key와 value를 매칭하여 key로 value를 검색
  • 다른 언어에서는 Hash Table 이라느 ㄴ용어를 사용
  • {Key1: Value1, Key2: Value2, Key3: Value3, …} 형태

1.6 collections 모듈

  • List, Tuple, Dict에 대한 Python Built-in 확장 자료 구조 (모듈)
  • 편의성, 실행 효율 등을 사용자에게 제공함

1.6.1 deque

  • Stack과 Queue를 지원하는 모듈
  • List에 비해 효율적인 = 빠른 자료 저장 방식을 지원함
  • rotate, reverse등 Linked List의 특성을 지원함
  • 기존 list 형태의 함수를 모두 지원함
  • deque 는 기존 list 보다 효율적인 자료구조를 제공
  • 효율적 메모리 구조로 처리 속도 향상

1.6.2 OrderedDIct

  • Dict와 달리, 데이터를 입렬한 순서대로 dict를 반환함
  • 그러나 dict도 python3.6부터 입력한 순서를 보장하여 출력함
  • 의미가 크게 없음

1.6.3 defaultdict

  • Dict type의 값에 기본 값을 지정, 신규값 생성시 사용하는 방법
  • 하나의 지문에 각 단어들이 몇 개나 있는지 세고 싶을경우?
d = defaultdict(lambda : 0)
d['first']
0

1.6.4 Counter

  • Sequence type의 data element들의 갯수를 dict 형태로 반환
  • Dict type, keyword parameter 등도 모두 처리 가능
  • Set의 연산들을 지원함
    • + : 더하기
    • & : 교집합
    • | :

1.6.5 Namedtuple

  • Tuple 형태로 Data 구조체를 저장하는 방법
  • 저장되는 data의 variable을 사전에 지정해서 저장함

댓글남기기