*자료구조
- 데이터 저장시, 데이터의 특징에 따라 컴퓨터에 효율적으로 정리하기 위한 데이터의 저장 및 표현 방식
*데이터 구조 생각해보기
- 전화번호부 정보는 어떻게 저장하면 좋을까?
- 은행 번호표 정보는 어떻게 처리하면 좋을까?
- 서적 정보는 어떻게 관리하면 좋을까?
- 창고에 쌓인 수화물의 위치를 역순으로 찾을 때?
*자료구조
- 스택과 큐(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 |