now is better than never
[인공지능(AI) 기초 다지기] 1. 파이썬 기초 (3) 본문
3. 파이썬 기초 문법 2
- Stack & Queue with List
- Stack (스택)
- 나중에 넣은 데이터를 먼저 반환하도록 설계된 메모리 구조
- Last In First Out (LIFO)
- Data의 입력을 Push, 출력을 Pop이라고 함
- List의 append() = Push, pop() = Pop
- pop()은 맨 끝의 값을 빼내면서 리턴함
- 대표적으로 택배화물차, 입력된 글자 역순으로 출력
- Queue (큐)
- 먼저 넣은 데이터를 먼저 반환하도록 설계된 메모리 구조
- First In First Out (FIFO)
- Data의 입력을 Put, 출력을 Get이라고 함
- List의 append() = Put, pop(0) = Get
- pop(0)은 맨 앞의 값을 빼내면서 리턴함
- Tuple (튜플)
- 값의 변경이 불가능한 리스트
- tuple[index] = value 불가능
- 선언시 () 사용
- 리스트의 연산, 인덱싱, 슬라이싱 등 동일하게 사용
- 변경하면 안되는 데이터를 저장 (학번, 이름, 우편번호 등)
- 함수의 반환 값 등 사용자의 실수에 의한 에러 방지
- 하나의 값을 입력할 경우 t = (1, ) (괄호가 없으면 정수로 인식)
- Set (집합)
- 값을 순서없이 저장, 중복 불허
- 집합 연산
set([list]) 혹은 {}를 통해 set 선언
set.add(value) : 원소 추가
set.remove(value) : 원소 삭제
set.update([list]) : 원소 여러 개 추가
set.discard(value) : 원소 삭제
set.clear() : 전체 원소 삭제
set.union(set) : 합집합
set.intersection(set) : 교집합 = set & set
set.difference(set) : 차집합 = set - set
- Dictionary (사전)
- Key와 Value를 함게 저장
- Key (Identifier) : 구분을 위한 데이터 고유 값
- Value : 데이터 값
- 다른 언어에서는 Hash Table 이라는 용어가 있음 (완전 똑같은 건 아님)
- 주민등록번호, 제품모델번호
- dict() 혹은 {}로 선언
- 함수
dict.items() : key, value 쌍의 튜플들을 리스트로 리턴 -> for문과 함께 많이 사용
dict.key() : key값 만 출력
dict.values() : value값만 출력
dict["key"] = value : dict 추가 / 수정
for k, v in dict.items() : # key, value unpacking
"str" in dict.keys() # key값에 "str"이 있는지 확인
num in dict.values() # value값에 num이 있는지 확인
- Collection
- List, Tuple, Dict에 대한 빌트인 확장 자료 구조 모듈
- 위의 자료형들을 다룰 때 편의성, 실행 효율 등 사용자에게 제공
- 종류
from collections import deque
from collections import Counter
from collections import OrderedDict -> 현재 파이썬은 순서를 보장하며 출력하기 때문에 지금은 의미없음
from collections import defaultdict
from collections import namedtuple
- Deque (데큐)
- Stack과 Queue를 지원하는 모듈
- 양 끝에서 삽입과 삭제가 가능한 자료구조
- List에 비해 효율적이고 빠른 자료 저장 방식
- rotate, reverse 등 Linked List의 트성을 지원함
- defaultdict
- Dict type 값에 기본 값을 지정, 신규 값 생성 시 사용하는 방법
- dict 항상 key값을 생성한 다음에 접근해야 함 -> 실제로 key값이 있는지 없는지 확인하기 어려움 (에러)
def default_value():
return 10
from collections import defaultdict
d = defaultdict(lambda : 0)
d["first"] # 0 출력
d = defaultdict(default_value)
d["first"] # 10 출력
- 하나의 지문에 각 단어들이 몇 개나 있는지 세고 싶은 경우 -> Text Mining 접근법 = Vector Space Model
- Counter
- Sequence type의 각각의 data elemnet들의 갯수를 dict 형태로 반환
- Set 연산들을 지원함 (c + d / c & d / c | d - union)
from collections import Counter
c = Counter()
c = Counter('gallahad') # a new counter from an iterable
print(c) # Counter({'a': 3, 'l': 2, 'g': 1, 'd': 1, 'h': 1})
c = Counter({'red': 4, 'blue': 2})
print(list(c.elements())) # a new counter from a mapping
# ['red', 'red', 'red', 'red', 'blue', 'blue']
- namedtuple
- Tuple 형태로 Data 구조체를 저장하는 방법
- 저장되는 data의 variable을 사전에 지정해서 저장함
데이터의 기본적인 체계를 하나로 묶어줄 수 있는 장점- 파이썬에서는 잘 안씀 -> 클래스 사용
'Python > [코칭스터디 9기] 인공지능 AI 기초 다지기' 카테고리의 다른 글
[인공지능(AI) 기초 다지기] 2. 파이썬 다지기 (2) (0) | 2023.01.27 |
---|---|
[인공지능(AI) 기초 다지기] 2. 파이썬 다지기 (1) (0) | 2023.01.26 |
[인공지능(AI) 기초 다지기] 1. 파이썬 기초 (4) (0) | 2023.01.17 |
[인공지능(AI) 기초 다지기] 1. 파이썬 기초 (2) (0) | 2023.01.13 |
[인공지능(AI) 기초 다지기] 1. 파이썬 기초 (1) (0) | 2023.01.07 |