본문 바로가기

부스트캠프 AI Tech/[Week1] Python

[Week1] Python - Data Structure

*자료구조

  • 데이터 저장시, 데이터의 특징에 따라 컴퓨터에 효율적으로 정리하기 위한 데이터의 저장 및 표현 방식

*데이터 구조 생각해보기

  • 전화번호부 정보는 어떻게 저장하면 좋을까?
  • 은행 번호표 정보는 어떻게 처리하면 좋을까?
  • 서적 정보는 어떻게 관리하면 좋을까?
  • 창고에 쌓인 수화물의 위치를 역순으로 찾을 때?

*자료구조

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

 

*스택 (Stack) with list object

  • 리스트를 사용하여 스택구조를 구현 가능
  • push를 append(), pop을 pop()를 사용

 

*큐 (Queue) with list object

  • 리스트를 사용하여 큐 구조를 구현 가능
  • push를 append(), get을 pop(0)를 사용

 

*튜플(tuple)

  • 값의 변경이 불가능한 리스트
  • 선언시 "[]"가 아닌 "()"를 사용
  • 리스트의 연산, 인덱싱, 슬라이싱 등을 동일하게 사용
  • ex) t = (1,2,3)
  • 프로그램 작동 동안 변경되지 않는 데이터를 저장할 때 사용 ex) 학번, 이름 , 우편번호
  • 함수의 반환 값등 사용자의 실수에 의한 에러 방지

*집합(set)

  • 값을 순서없이 저장, 중복 불허 하는 자료형
  • set 객체 선언을 이용하여 객체 생성
  • ex) s = set([1,2,3,1,2,3,])  =>  s = {1,2,3}
  • s1.union(s2)   => s1과 s2의 합집합
  • s1.intersection(s2)  => s1과 s2의 교집합
  • s1.difference(s2)  => s1과 s2의 차집합

*사전(dictionary)

  • 데이터를 저장 할 때는 구분 지을 수 있는 값을 함께 저장 ex)주민등록번호, 제품 모델 번호
  • 구분을 위한 데이터 고유 값을 Identifier 또는 Key 라고 함
  • Key 값을 활용하여, 데이터 값(Value)를 관리함
  • {Key1 : Value1 , Key2 : Value2 , Key3 : Value3 ...} 의 형태
  • 다른 언어에서는 Hash Table 이라는 용어를 사용
  • ex) country_code = {"America" : 1, "Korea" : 82, "China" : 86, "Japan" : 81}
  • ex) for key, value in country_code.items():  => unpacking

 

*Collections

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

*deque

  • stack과 queue를 지원하는 모듈
  • List에 비해 효율적인=빠른 자료 저장 방식을 지원
  • rotate, reverse등 Linked List의 특성 지원
  • 기존 list 형태의 함수를 모두 지원
  • ex) 추가 : dq.append , dq.extend , dq.appendleft , dq.extendleft   회전 : dq.rotate(1) 

 

*jupyter command(함수 실행속도) => %timeit function_name

 

*OrderedDict

  • Dict와 달리, 데이터를 입력한 순서대로 dict를 반환함
  • 그러나 dict도 python 3.6 부터 입력한 순서를 보장하여 출력함
  • 지금 dict는 순서를 보장하기 때문에 쓸 필요는 없음

*Defaultdict

  • Dict type의 값에 기본 값을 지정, 신규값 생성시 사용하는 방법
  • key값이 없어도 기본값을 지정할 수 있음
  • ex) d = defaultdict(함수형태)  =>  d = defaultdict(lambda : 0)
  • d["first"] , d["second"] 등 value가 0이 기본값으로 지정됨

 

*Counter

  • Sequence type의 data element들의 갯수를 dict 형태로 반환
  • ex) ball_or_strike_list = ["B", "S" , "S" , "S" , "S" , "B" , "B"]
  • ex) c = Counter(ball_or_strike_list)
  • ex) c = > Counter({'B' : 3 , 'S' : 4})
  • Set의 연산들을 지원함 ex) + , | , &

*namedtuple

  • Tuple 형태로 Data 구조체를 저장하는 방법
  • 저장되는 data의 variable을 사전에 지정해서 저장함
  • ex) Point = namedtuple('Point' , ['x' , 'y'])
  • ex) p = Point(x=11, y=22)
  • ex) p[0]  => 11  , p[1]  => 22
  • ex) p.x  => 11 , p.y => 22

'부스트캠프 AI Tech > [Week1] Python' 카테고리의 다른 글

[Week1] Python - pandas  (0) 2021.08.06
[Week1] Python - numpy  (0) 2021.08.06
[Week1] Python - pythonic code  (0) 2021.08.04