Pythonic_codes

이상민·2023년 3월 4일
0
post-custom-banner
파이썬 스타일의 코딩기법, 파이썬 특유의 문법을 활용하여 효율적으로 코드를 표현. 고급코드,머신러닝 등에서 많이 쓰인다

1. Lambda

함수 이름 없이, 함수처럼 쓸 수 있는 익명함수
f = lambda x,y: x + y
print(f(1,4)) #	5출력
print((lambda x,y:x + y)(10,4))#14

2. map

함수와 시퀀스자료형을(리스트,튜플,문자열) 인자로 받아 리스트의 원소 각각 함수에 대입한뒤 값을 반환하는 함수

map(함수,시퀀스)

  • map function
print(list(map(int,"1234"))) #[1,2,3,4]
print(map(int,"1234")) #<map object at 0x105295a50> -> iteration을 반환
print(list(map(lambda x: x**2,range(5)))) #[0,1,4,9,16]
  • general function
def squares(arr):
	n = []
    for i in arr:
    	n.append(i**2)
    return n
print(squares(range(5))) # [0,1,4,9,16]

3. reduce

아래의 그림과 같이 시퀀스 자료형의 값을 누적으로 함수에 적용한다

from functools import reduce
print(reduce(lambda x,y: x+y,[1,2,3,4,5])) # 15

print(reduce(lambda x,y: y + x,"abcde")) #edcba

Summary

lambda,map,reduce는 간단한 코드로 다양한 기능들을 제공한다. 코드의 직관성이 떨어져 python3에서는 권장하지않음.
그러나 legacy library나 다양한 머신러닝 코드에서 여전히 사용중이다.

iterable object

  • sequence형 자료형에서 데이터를 순서대로 추출하는 object
  • 리스트, 튜플,딕셔너리, 문자열 등이 있다

Generator

파이썬에서 제너레이터는 여러 개의 데이터를 미리 만들어 놓지 않고 필요할 때마다 즉석해서 하나씩 만들어낼 수 있는 객체를 의미한다
  • iterable 객체를 특수한 형태로 사용해주는 함수
  • element가 사용되는 시점에 값을 메모리에 반환: yield를 사용해 한번에 하나의 element만 반환
  • 일반적인 iterator에 비해 훨씬 적은 메모리 공간 사용
  • 큰 데이터를 처리하는 경우 자주 쓰인다 ex)데이터 분석

variable_length(가변인자)

- 개수가 정해지지 않은 변수를 함수의 parameter로 사용하는 법
- asterisk(*) 기호를 사용하여 prameter를 표시한다
- 입력된 값은 tuple 값이다
- 가변인자는 오직 한개만 맨 마지막 parameter 위치에 사용가능
def asterisk_test(a,b,*args):
	return a + b + sum(args) # a = 1,b = 2, args = (3,4,5)
print(asterisk_test(1,2,3,4,5)

keyword variable_length(키워드 가변인자)

- parameter 이름을 따로 지정하지 않고 입력하는 방법
- asterisk(*) 두개를 사용
- 입력된 값은 딕셔너리 타입으로 사용된다
def kwargs(one,two,*args,**kwargs):
	print(one,two,sum(args)) #3 4 35
    print(kwargs) #{'first': 3, 'second': 4, 'third': 5}
kwargs(3,4,5,6,7,8,9,first = 3,second = 4,third = 5)
profile
잘하자
post-custom-banner

0개의 댓글