Wrap up!
개념 이해
--This book will focus specifically on Python standard built-in library, data structure, and algorithm (so will not focus on OOP or non-standard libraries like NumPy)
Pseudocode: 컴퓨터 프로그램의 작동원리 또는 알고리즘이 정해져 있지 않은 고차원 언어로 기술한 것을 말한다. 다시 말하면 수도코드는 알고리즘이 수행될 내용을 (로직을) 우리 언어로 설명한다.
파이썬: 1) 읽기 쉽다. (예. 중괄호로 묶기보다 인덴트로 묶임) 2) 사용자가 원하는 모듈 패키지를 다른 프로그램에서 사용 가능. 3) 동적 타이핑 언어이다 (dynamic programming language)
동적 (dynamic) vs. 정적 (static)
동적타이핑 (Dynamic typing):
동적타이핑은 코드를 작성하는데 있어서 컴퓨터적 구조를 생략한다. 따라서 변수를 지정할 때 해당 변수의 데이터 타입 등을 명시하지 않아도 컴퓨터가 알아서 해석하도록 냅둔다. (실행 시간에 자료형을 검사한다.)
코드를 작성하는 시간이 빠르지만 실행하는 속도가 느리다. 그래서 속도를 중요시하는 작업에선 사용하기 부적합하지만 작고 단순한 프로젝트를 하기엔 적합하다.
코드의 내용, 로직을 파악하기 쉽다.
동적 타이핑을 사용하는 언어 - 파이썬, 루비, php 등..
객체의 멤버에 무제한으로 접근할 수 있다. (속성이나 전용의 메서드 훅을 만들어 제한할 수는 있음.)
모듈, 클래스, 객체와 같은 언어의 요소가 내부에서 접근할 수 있고, 리플렉션을 이용한 기술을 쓸 수 있다.
출처: https://crystalcube.co.kr/44 [유리상자 속 이야기]
정적타이핑 (Static typing):
정적타이핑은 동적타이핑과 정반대로 코드를 작성할 때 컴퓨터적 구조를 명시해준다. 즉, int a = 15 라는 식으로 변수의 데이터 타입을 직접 명시하며 컴퓨터가 해야할 일을 덜어주는 것이다.
코드를 작성하는 시간이 느리지만 실행하는 속도가 빠르다. 그래서 크고 복잡하며 여러 사람들이 함께 참여하는 프로젝트에 적합하다.
코드의 구조를 파악하기 쉽다.
정적 타이핑을 사용하는 언어 - C, C++, 자바 등...
https://seongonion.tistory.com/17?category=869672
Indent (acc. to PEP8)
Naming Convention
Type Hint (acc. to PEP484)
a: str = "1" (str 타입 선언)
b: int = 1 (int 타입 선언)
def fn(a:int) -> bool:
List Comprehension
리스트 컴프리헨션 안 쓴 예)
1)
a = [] for n in range(1,10+1): if n%2==1: a.append(n*2) print(a)
2)
a = {} for key, value in original.items(): a[key]=value
List Comp 쓴 예)
1) [n*2 for n in range(1,10+1) if n%2==1]
2) a={key:value for key, value in original.items()}
Generator
Range
Enumerate
ex.
a = [1,2,3,2,45,2,5] enumerate(a) >>> <enumerate object at ...> list(enumerate(a)) >>> [(0,1),(1,2),(2,3),(3,2),(4,45),(5,2),(6,5)]
^위처럼 인덱스 숫자와 value 숫자가 튜플로 묶여서 리턴된다.
나숫셈
// (int - floor division) vs. / (float) vs. % vs. divmod (몫과 나머지)
ex.
5/3 >>> 1.6666667 >>> type(5/3) >>> <class 'float'>
5//3 >>> 1 >>> type(5//3) >>> <class 'int'>
5%3 >>> 2 (나머지)
divmod(5,3) >>> (1,2)
Print
ex. print('A1', 'B2') >>> A1 B2
ex. print('A1', 'B2', sep=',') >>> A1,B2
ex.
print('aa', end=' ')
print('bb') >>> aa bb
ex. a = ['A','B']
print(' '.join(a)) >>> A B
defaultdict 객체
Counter 객체
빅오
상한 (Big-O) vs. 하한 (Big-Omega) vs. 평균 (Big-Theta)
분할 상환 분석
파이썬 자료형 사진 (p. 107)
mapping (복합 자료형 - dictionary), set (dict과 동일하게 {}사용, but key,value대신 그냥 값만 선언.
sequence 수열: immutable (str, tuple, bytes) vs. mutable (list)
파이썬은 모든 것이 객체다: Immutable Object (str, tuple) vs. Mutable Object (list, set, dict)
immutable object은 고유 id가 있어 값이 같더래도 다르다.
ex.
a = 10
b = 10
b = a
id(10), id(a), id(b) >>> (123, 456, 789) 각자 다르다
mutable object
ex.
a = [1,2,3,4,5]
b = a
a[2] = 4
a >>> [1,2,4,4,5]
b >>> [1,2,4,4,5]
^리스트 a요소 하나를 조작해 값을 변경하니 b의 값이 참조되어 같이 변경됬다.
p.122-3
List
Deque (double-ended queue): 양쪽 끝을 모두 추출할 수 있는 큐를 일반화한 추상 자료형(Abstract Data Type)이다.
Two-pointer
Lambda
p.149 (HELP!!)
V. 배열