Python

Pythonic way

  • map과 filter 대신 list comprehension을 사용하라
  • range 보다는 enumerate를 사용하라
  • def 에서 *args를 사용하면 함수에서 가변 개수의 위치 인수를 받을 수 있다.
  • class에 필요한 다른 생성자를 정의하려면 @classmethod를 이용하라
  • super로 부모 함수를 초기화 하라
  • 파이썬의 언어 후크language hook를 사용하면 시스템을 연계하는 범용 코드를 쉽게 만들 수 있다.
    • __getattr__, __getattribute__, __setattr__
  • __doc__이라는 속성에 접근하면 파이썬 프로그램 자체에 포함된 docstring을 추출할 수 있다.
  • 최적화 하기 전에 Profile을 이용해 프로파일 하라

(Effective Python, 2015)

String

Python2와 Python3의 String 처리가 상이하다. 특히 파이썬은 특유의 unicode 인코딩 방식이 있는데, Python3에서는 훨씬 더 개선된 모습을 보여준다.

set, list, tuple

a = {1, 2, 3}  # set
b = [1, 2, 3]  # list
c = (1, 2, 3)  # tuple

List is mutable and tuples is immutable.

List Comprehension

참고하여 아래에 정리했다.

Nested Loops

flattened = []
for row in matrix:
    for n in row:
        flattened.append(n)

Here’s a list comprehension that does the same thing:

flattened = [n for row in matrix for n in row]

Other Comprehensions

first_letters = set()
for w in words:
    first_letters.add(w[0])

That same code written as a set comprehension:

first_letters = {w[0] for w in words}
flipped = {}
for key, value in original.items():
    flipped[value] = key

That same code written as a dictionary comprehension:

flipped = {value: key for key, value in original.items()}

Python dictionary is hash mapping or hash table.

코딩 가이드

Extending with C++


2017 Book Reports · 2018 Book Reports · 2019 Book Reports · AWS · Activation, Cost Functions · CNN, RNN · C++ · Decision Tree · Docker · Go · HTML, CSS, JavaScript · Hadoop, Spark · Information Retrieval · Java · Jupyter Notebooks · Keras · LeetCode · LifeHacks · MySQL · NLP 실험 · NLP · Naive Bayes · OAuth 2.0 · OOP · Python Data Structure Cheatsheet · Python · RSA · Software Deployment · Support Vector Machine · Word Embedding · XGBoost · Scikit Learn · 거리 · 데이터 마이닝 · 데이터 사이언스 · 딥러닝 · 머신러닝 분류기 · 머신러닝 · 비지니스 · 사회심리학 · 수학 · 알고리즘 · 영어 · 운영체제 · 이산수학 · 인공지능 · 자료구조 · 진화생물학 · 컴파일러 · 컴퓨터시스템구조 · 통계학 응용 · 통계학 ·
is a collection of Papers I have written.
© 2000 - Sang-Kil Park Except where otherwise noted, content on this site is licensed under a CC BY-NC 4.0.
This site design was brought from Distill.