[python]itertools를 사용해서 고난이도 코딩테스트도 쉽게 풀자!
2020. 7. 18. 18:17
Programming/Python
Itertools APL, Haskell, SML에 영감을 받아 파이썬에 최적화되어 동작하도록 구성된 반복 연산자 패키지로 자체 또는 조합되어 효율적이고 빠르게 동작하며 operator 모듈과 효과적으로 동작함 코딩 테스트 풀이 시 굉장히 유용하게 사용되는 패키지 중 하나 generator와 같이 사용할 수 있다. (generator가 궁금하시다면 => "링크") * operator 모듈 : 파이썬의 내장 연산자에 해당하는 __add__ 등을 제공하는 패키지로 add, lt, ne 등 객체 비교, 논리 연산, 수학 연산, 시퀀스 등을 수행하는데, __func__ 가 아니라 단일 이름으로 제공되는 차이가 있음 I. 무한 반복 반복 연산자를 무한히 수행하기 때문에 while, try/except 구문 등과 ..
[python]데코레이터(Decorator)
2020. 7. 11. 21:31
Programming/Python
1. 데코레이터 클로저인데 인수가 함수인 부분이 차이가 있으며, 다양한 상황에서 동일한 기능을 수행하는 함수가 필요할 때 데코레이터를 만들어 사용하면 유리합니다. 일반적으로 로그를 남겨 redirecting 등 부차적 스테이지로 넘기거나, 함수의 실행시간, 메모리 점유시간 등을 확인하기 위한 용도로 많이 사용됩니다. 1.장점 공통 함수 작성(로깅, 프레임워크, 유효성 체크 등 )을 통한 간결한 코드라인과 중복 제거 조합 사용이 편리 2.단점 가독성 좋지 못하고 디버깅이 이렵다. 특정 기능에 한정된 함수는 단일 함수로 작성하는게 좋다 1) 사용법 def decorator_func(func): def wrap_func(): return func() return wrap_func() def target(): ..
[python]Comprehension and Generator expression
2020. 7. 11. 20:59
Programming/Python
2020/07/11 - [Coder/Python] - [python/자료형] 시퀀스 자료형 -2. Dict [python/자료형] 시퀀스 자료형 -2. Dict 3. dict tuple, dict 와 함께 정말 많이 쓰는 자료형 중 하나 대표적인 hashtable 1) dict source = (('k1', 'val1'), ('k1', 'val2'), ('k2', 'val3'), ('k2', 'val4'), ('k2', 'val5')) dic1 = {} for k, v in s.. leo-bb.tistory.com 1. Comprehension and Generator expression 1) Comprehension iterable 한 객체를 생성하는 방법 중 하나 A. iterable 다수 요소(el..
[python/자료형] 시퀀스 자료형 -2. Dict
2020. 7. 11. 20:28
Programming/Python
1. Dict tuple, dict 와 함께 정말 많이 쓰는 자료형 중 하나 대표적인 hashtable 1) dict source = (('k1', 'val1'), ('k1', 'val2'), ('k2', 'val3'), ('k2', 'val4'), ('k2', 'val5')) dic1 = {} for k, v in source: if k in new_dict1: dic1[k].append(v) else: dic1[k] = [v] dic1 >>> {'k1': ['val1', 'val2'], 'k2': ['val3', 'val4', 'val5']} dic2 = {} # Use setdefault for k, v in source: dic2.setdefault(k, []).append(v) dic2 >>> ..
[python]파이썬 함수형 프로그래밍(일급함수, 고차함수, 클로저)
2020. 7. 11. 19:17
Programming/Python
1. 개념 순수 함수들을 조합하여 전체 프로그램을 구현하는 방식으로 말 그대로 프로그램 내에서 데이터 연산 및 처리를 수학적인 개념에서 이해하여 다루려는 개념 2. 콘셉트 side effect 차단 모든 state를 immutable 하게 만들어 side effect를 사전에 차단하려 합니다. f(x+y) = z 가 있다면 f(x+y) = n 가 절대 불가능하듯 하나의 함수가 단 하나의 정상 값과 동작 결과를 갖도록 합니다. 모든 것을 객체로 취급 함수형 프로그래밍에서는 모든 것을 객체로 취급하기 때문에 함수 자체도 객체로 취급합니다. 따라서 함수형 프로그래밍에서는 함수가 인수로 전달되고, 변수에 할당될 수 도 있으며 반환될 수 있습니다. 보다 쉽고 안전한 동시성 작업 모든 객체들이 immutable 하..
[Python/자료형]시퀀스 자료형 -1. List & tuple, Hash table
2020. 7. 11. 13:20
Programming/Python
I.시퀀스 자료형 요소(elements)가 연속적으로 나열되어 있는 모든 자료형 * 시퀀스 자료형은 모두 인덱스 컨트롤, 슬라이싱 등 공통의 기능을 수행할 수 있습니다. 1) 컨테이너형(Container datatypes) : 서로 다른 자료형을 담을 수 있다. ex.) list, tuple, colletions의 deque, namedtuple, orderdict, counter, defaultdict 등 2) 플랫형(Flat datatypes) : 단일 자료형만 담을 수 있다. ex.) str, int, bytes, bytearray, array.array, numpy.ndarray 1. List tuple, dict와 함께 정말 많이 쓰는 자료형 중 하나 수정 가능(mutable) = not has..
[Python/자료형] tuple+dict == 네임드 튜플(namedtuple)
2020. 7. 4. 17:06
Programming/Python
1. 네임드 튜플 네임드 튜플은 collections 에 내장된 모듈로 값이 변경되지 않는 튜플의 성격과 키와 값을 갖는 딕셔너리의 성격을 모두 갖고 있는 형식입니다. 클래스 형식으로 선언하여 사용합니다. 네임드 튜플은 자료의 양이 많고 여러 정보가 연결되어 있을 때 관리에 굉장한 편의성을 제공합니다. 1. 네임드 튜플 선언 from collections import namedtuple # 네임드 튜플 선언 방법 Point = namedtuple('Point', 'x y z') #Point = namedtuple('Point', ['x', 'y', 'z']) #Point = namedtuple('Point', 'x, y, z') #Point = namedtuple('Point', 'x x class', ..