본문 바로가기

부스트캠프 AI Tech/[Week1] Python

[Week1] Python - pythonic code

*pythonic code?

  • 파이썬 특유 문법을 의미하는 pythonic cnode
  • 짧고 이해하기 편함

 

*Contents

  • split & join
  • list comprehension -> for loop append보다 빠름
  • enumerate & zip
  • lambda & map & reduce
  • generator
  • asterisk

 

*split 함수

  • string type의 값을 "기준값"으로 나눠서 List 형태로 반환
  • ex) items = "zero one two three"
  • ex) items.split(" ")  => ['zero' , 'one' , 'two' , 'three']
  • d

*join 함수

  • string type의 값을 "기준값"으로 합침
  • ex) colors = ["red" , "blue" , "green" , "yellow"]
  • ex) "-".join(colors)  => 'red-blue-green-yellow'

 

*list comprehension

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

 

*pprint.pprint(" ") => 데이터가 세로로 정렬되어 보기 편함.

 

 

 

*enumerate

  • list의 element를 추출할 때 번호를 붙여서 추출
  • ex) text = ['in' , 'Group' , 'is' , 'a']
  • ex) {i : v.lower() for i, v in enumerate(text)}
  • => {0 : 'is' , 1: 'a' , 2: 'group' , 3 : 'in'}

 

*zip

  • 두개의 list의 값을 병렬적으로 추출함
  • ex) alist = ["a1", "a2" , "a3"]
  • ex) blist = ["b1", "b2" , "b3"]
  • [ [a,b]  for a , b in zip(alist, blist)]
  • => [['a1', 'b1'],  ['a2', 'b2'] , ['a3', 'b3]]

 

*lambda

  • 함수 이름 없이, 함수처럼 쓸 수 있는 익명함수
  • 수학의 람다 대수에서 유래

  • 문법이 어렵고 테스트가 어려움..
  • docstring 지원 미비

 

*map

  • 두 개 이상의 list에도 적용 가능함, if filter사용 가능
  • ex)  ex = [1,2,3,4,5]
  • ex)    f = lambda x: x**2
  • ex)  list = (map(f,ex))
  • => [1, 4, 9 ,16 ,25]
  • 위식을 list comprehension을 활용하면 간단하게 표현 가능 => [f(value)  for value in ex]

 

*reduce

  • map function과는 달리 list에 똑같은 함수 적용해서 통합

 

*Generator

  • iterable object의 특수한 형태로 사용해주는 함수
  • element가 사용된느 시점에 값을 메모리에 반환
  • :yield를 사용해 한번에 하나의  element만 반환함
  • 메모리에 주소값만 올려놓고 값을 호출할때 yield가 값을 던짐
  • Generator comprehension도 활용 가능 => gen_ex = (n*n for n in range(500))

*When generator?

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

 

*가변인자 using asterisk

  • 개수가 정해지지 않은 변수를 함수의 parameter로 사용하는 법
  • Keyword arguments와 함께, argument 추가가 가능
  • Asterisk(*) 기호 사용
  • tuple type
  • 가변인자는 오직 한 개만 마지막 파라미터 위치에 사용가능

 

*키워드 가변인자

  • 파라미터 이름을 따로 지정하지 않고 입력하는 방법
  • asterisk(*) 두개를 사용하여 함수의 파라미터를 표시
  • dict type
  • 가변인자는 오직 한 개만 기존 가변인자 다음에 사용

 

 

'부스트캠프 AI Tech > [Week1] Python' 카테고리의 다른 글

[Week1] Python - pandas  (0) 2021.08.06
[Week1] Python - numpy  (0) 2021.08.06
[Week1] Python - Data Structure  (0) 2021.08.04