now is better than never

[인공지능(AI) 기초 다지기] 1. 파이썬 기초 (3) 본문

Python/[코칭스터디 9기] 인공지능 AI 기초 다지기

[인공지능(AI) 기초 다지기] 1. 파이썬 기초 (3)

김초송 2023. 1. 17. 19:11

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을 사전에 지정해서 저장함
  • 데이터의 기본적인 체계를 하나로 묶어줄 수 있는 장점
  • 파이썬에서는 잘 안씀 -> 클래스 사용