안녕하세요.
패스트 캠퍼스 수강후기 - 머신러닝과 데이터 분석 A-Z 8회차 미션 시작합니다!
머신러닝 인강 후기 8회차는 함수와 람다함수에 대해 공부합니다.
패스트 캠퍼스 강의에서 제공하는 실습파일을 보면서 강사님의 지시에 따라 실습을 따라하시면 됩니다.
" 함수 "
1) variable scope (변수의 범위)
함수를 작성할 때, 변수의 범위를 정해줘야 합니다.
변수의 범위란, 변수가 참조 가능한 코드 상의 범위를 말합니다.
함수 내의 변수는 자신의 속한 코드 블록이 종료되면 소멸되는데, 이렇게 특정 코드 블록에서 선언된 변수를 지역변수(local variable)이라고 합니다.
반대로 가장 상단에 정의되어 프로그램 종료 전까지 유지되는 변수를 전역변수(global variable)이라고 합니다.
같은 이름의 지역변수와 전역변수가 존재할 경우, 지역변수의 순위가 더 높습니다.
num1 = 10
num2 = 30
def test(num1, num2):
print (num1, num2)
return num1 + num2
test(30, 40) # 30 40
print (num1, num2) # 10 30
2) variable length argument(가변길이 인자)
전달되는 파라미터의 개수가 고정적이지 않은 경우 사용합니다.
print함수와 format 함수 등이 있습니다.
parameter 앞에 *을 붙이면 def 입장에서는 가변길이인자가 됩니다.
다만, 파이썬에서는 관습적으로 *args (파라미터를 튜플의 형태로 전달) 와 **kwargs (파라미터를 딕셔너리 형태로 전달) 를 사용한다고 하네요!
def test(*args):
for item in args:
print (item)
test(10, 30, 40, 50, 60, 70)
3) keyword parameter (키워드 파라미터)
**가 붙은 경우에도 키워드 파라미터로 인식하고 딕셔너리형태로 전달합니다.
함수 호출 시 파라미터의 이름과 값을 함께 전달할 수 있습니다.
def test2(**kwargs):
for key, value in kwargs.items():
print ('key: ', key, ', value: ', value)
test2(a=1)
# key: a, value: 1
** items() 함수
키-값 쌍을 한꺼번에 뽑아낼 수 있는 함수입니다.
머신러닝 인강 3회차 미션 때 공부했던 내용이 다시 나왔네요~!
4) 가변길이 함수의 대표적인 예 - 문자열 포맷 함수
여러가지 값과 포맷을 이용하여 문자열을 정의할 수 있는 함수입니다.
{} placerholder 를 문자열 내에 위치시킨 후, 해당 위치에 format함수로 전달된 값으로 대체하여 문자열을 생성합니다.
" 람다 함수 "
람다함수란 단일문으로 표현되는 익명함수입니다.
익명함수란, 이름이 없고 구현체만 존재하는 간단한 함수를 뜻합니다.
코드 상에서 한 번만 사용되는 기능이 있을 떄, 굳이 함수로 만들지 않고 1회성으로 만들어서 쓸 때 람다 함수를 사용합니다.
square = lambda x: x**2
square(5) # 25
strings = ['bob', 'charles', 'alexander3', 'teddy']
# 문자열 알파벳 순으로 오름차순 정렬
strings.sort()
print (strings) # ['alexander3', 'bob', 'charles', 'teddy']
# 문자열의 길이의 내림차순으로 정렬
strings.sort(key=lambda s:len(s), reverse=True)
print (strings) # ['alexander3', 'charles', 'teddy', 'bob']
1) filter 함수
특정 조건을 만족하는 요소만 남기고 필터링합니다.
a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
list(filter(lambda n: n%2 == 1, a)) #[1, 3, 5, 7, 9]
2) map 함수
각 원소를 주어진 수식에 따라 변형하여 새로운 리스트를 반환합니다.
a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
list(map(lambda n: n**2, a)) #[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
list(map(lambda n: n==0, a)) # [False, False, False, False, False, False, False, False, False, False]
3) reduce 함수
차례대로 앞 2개의 원소를 가지고 연산합니다.
연산의 결과가 또 다음 연산의 입력으로 진행됩니다.
따라서 마지막까지 진행되면 최종 출력은 한 개의 값만 남게 됩니다.
# 리스트 내의 합
import functools
a=[1, 3, 5, 8]
functools.reduce(lambda x, y: x+y, a) #17
마지막으로 함수 연습문제까지 풀었네요!
머신러닝 인강 최강자를 만나고 싶으면!? https://bit.ly/3lZfGmn
'환급 챌린지!' 카테고리의 다른 글
[패스트캠퍼스 수강 후기] 머신러닝 인강 100% 환급 챌린지 10회차 미션 (0) | 2020.10.28 |
---|---|
[패스트캠퍼스 수강 후기] 머신러닝 인강 100% 환급 챌린지 9회차 미션 (0) | 2020.10.28 |
[패스트캠퍼스 수강 후기] 머신러닝 인강 100% 환급 챌린지 7회차 미션 (0) | 2020.10.25 |
[패스트캠퍼스 수강 후기] 머신러닝 인강 100% 환급 챌린지 6회차 미션 (0) | 2020.10.24 |
[패스트캠퍼스 수강 후기] 머신러닝 인강 100% 환급 챌린지 5회차 미션 (0) | 2020.10.23 |