Day_2 02. Pythonic code

작성일

2 분 소요

Pythonic code

1. Split & join

1.1 Split

  • string type의 값을 “기준값”으로 나눠서 List 형태로 변환

1.2 join

  • “기준값”으로 List의 값을 하나로 합침

2. list comprehension

  • 기존 List 사용하여 간단히 다른 List를 만드는 기법
  • 포괄적인 List, 포함되는 리스트라는 의미로 사용됨
  • 파이썬에서 가장 많이 사용되는 기법 중 하나
  • 일반적으로 for + append 보다 속도가 빠름

3. Enumerate & Zip

3.1 enumerate

  • list의 element를 추출할 때 번호를 붙여서 추출

3.2 zip

  • 두 개의 list의 값을 병렬적으로 추출함

4. lambda & map & reduce

4.1 lambda

  • 함수 이름 없이, 함수처럼 쓸 수 있는 익명 함수
  • 수학의 람다 대수에서 유래함
  • python3 부터는 권장하지는 않으나 여전히 많이씀
f = (lambda x, y : x + y)
f(10, 50)
60
  • lambda problems
    • 어려운 문법
    • 테스트의 어려움
    • 문서화 docstring 지원 미비
    • 코드 해석의 어려움
    • 이름이 존재하지 않는 함수의 출현
    • 그래도 많이 쓴다.

4.2 map

  • 두 개 이상의 list에도 적용 가능함, if filter도 사용가능
  • python3 는 iteration을 생성 -> list을 붙여줘야 list 사용가능
  • 실행시점의 값을 생성, 메모리 효율적
  • map(함수, 리스트)
  • 리스트 컴프리헨션 으로 쓰는걸 권장하지만 많이 씀

4.3 reduce

  • map function과 달리 list에 똑같은 함수를 적용해서 통합
  • from functools import reduce

5. Iterable objects

  • Sequence 형 자료형에서 데이터를 순서대로 추출하는 object
  • 내부적 구현으로 __iter____next__가 사용됨
  • iter() 와 next() 함수로 iterable 객체를 iterator object로 사용

6. Generator

  • iterable object를 특수한 형태로 사용해주는 함수
  • element가 사용되는 시점에 값을 메모리에 반환
    yield를 사용해 한번에 하나의 element만 반환함
  • 일반적인 iterator는 generator에 반해 훨씬 큰 메모리 용량 사용

  • list 타입의 데이터를 반환해주는 함수는 generator로 만들어라!
    읽기 쉬운 장점, 중간 과정에서 loop이 중단될 수 있을 때!
  • 큰 데이터를 처리할 때는 generator expression을 고려하라!
    데이터가 커도 처리의 어려움이 없음
  • 파일 데이터를 처리할 때도 generator를 쓰자

7. function passing arguments

7.1 keyword arguments

  • 함수에 입력되는 parameter의 변수명을 사용, arguments를 넘김

7.2 default arguments

  • parameter의 기본 값을 사용, 입력하지 않을 경우 기본값 출력

8. varible-length asterisk

8.1 가변인자 (variable-length)

  • 개수가 정해지지 않은 변수를 함수의 parameter로 사용하는 법
  • Keyword arguments와 함께, argument 추가가 가능
  • Asterisk(*) 기호를 사용하여 함수의 parameter를 표시함
  • 입력된 값은 tuple type으로 사용할 수 있음
  • 가변인자는 오직 한 개만 맨 마지막 parameter 위치에 사용가능
  • 가변인자는 일반적으로 *args를 변수명으로 사용
  • 기존 parameter 이후에 나오는 값을 tuple로 저장함

8.2 키워드 가변인자 (Keyword variable-length)

  • Parameter 이름을 따로 지정하지 않고 입력하는 방법
  • asterisk(*) 두개를 사용하여 함수의 parameter를 표시함
  • 입력된 값은 dict type으로 사용할 수 있음
  • 가변인자는 오직 한 개만 기존 가변인자 다음에 사용

  • parameter 의 순서는 argument, keyword argument, *args, **kwargs 로 지켜져야 한다.
  • 키워드형태를 뒤에 써야함

8.3 asterisk

  • 흔히 알고 있는 *를 의미함
  • 단순 곱셈, 제곱연산, 가변 인자 활용 등 다양하게 사용됨
  • tuple, dict 등 자료형에 들어가 있는 값을 unpacking
  • 함수의 입력값, zip 등에 유용하게 사용가능
print(*["1", "2", "3", "4"])
1 2 3 4

print(["1", "2", "3", "4"])
["1", "2", "3", "4"]
  • dict 타입을 풀어 줄 때는 ** 두개를 사용한다.

댓글남기기