부스트캠프 3기 Pythonic code (1월 17일)

Hyeyoon Kang·2022년 1월 17일
0

boostcamp

목록 보기
1/11

본 포스팅은 네이버 부스트캠프 3기를 통해 공부한 내용을 기반으로 작성된 글입니다.

Pythonic code

list comprehension

  • 파이썬에서 많이 사용되는 기법
  • 일반적으로 사용되는 for + append 보다 속도가 빠름
  • List를 사용하여 간단히 새로운 List를 만드는 방법

list comprehension 방식

# 0부터 9까지 수를 Lst(리스트)에 저장
Lst=[i for i in range(10)]

기존 방식

Lst=[]
for i in range(10):
    Lst.append(i)

lambda

  • 함수 이름 없이, 함수처럼 쓸 수 있는 익명 함수
  • 수학의 람다 대수에서 유래함
  • Python 3부터 권장하지는 않으나 딥러닝 코드에서 여전히 많이 쓰임

lambda 문제점

  • 문법이 어려움
  • 테스트가 어려움
  • 문서화 docstring 지원 미비
  • 코드 해석의 어려움

lambda 방식

f = lambda x, y: x + y
print(f(1,2))

기존 방식

def f(x, y):
	return x + y
print(f(1,2))

lambda 활용하여 빠른 입력 받기

import sys
input = lambda:sys.stdin.readline().rstrip()

map

  • map은 리스트의 요소를 지정된 함수로 처리해주는 함수
  • 실행시점에 값을 생성, 메모리 효율적
Lst=[1,2,3,4,5]
f = lambda x, y: x + y
print(list(map(f,Lst,Lst)))

reduce

  • map 함수와 달리 list에 순차적으로 함수를 적용
  • 딥러닝에서 대용량 data를 다룰 때 사용됨
from functools import reduce
print(reduce(lambda x, y: x + y, [1,2,3,4,5]))

generator

  • iterable object를 특수한 형태로 사용해주는 함수
  • element가 사용되는 시점에 값을 메모리에 반환 -> 메모리 주소 절약 가능 (yield를 사용해 한번에 하나의 element만 반환)
  • 실행하기 전, 메모리에 데이터를 올리지 않고 주소값만 가지고 있음
  • 큰 데이터를 처리할 때 사용하기 좋음
def general_list(value):
	result = []
    for i in range(value):
    	yield i
        
for n in generator_list(50):
	print(n)
profile
머신러닝 엔지니어를 꿈꾸는 부스트캠퍼입니다🙏

1개의 댓글

🔥🔥🔥

답글 달기