-
[파이썬] 9. Lamda 함수란? filter, map, reduce파이썬 Python 2019. 12. 5. 19:30
Lamda 함수란?
단일문으로 표현되는 익명함수이다.
즉, 이름없이 구현체만 존재하는 간결한 함수라고 할 수 있다.
코드 상에서 한번만 사용되는 기능이 있을 때, 굳이 함수로 만들지 않고 1회성으로 만들어 쓸때 사용한다.
기존에 함수를 정의 할 때 def 라는 키워드를 사용했는데,
lamda 라는 키워드를 사용해 함수를 정의할 수 있다.
def square(x): return x**2 square(5) # 25 square2 = lambda x: x**2 print(type(square2)) square(5) # <class 'function'> 25
def add(x,y): return x+y add2 = lambda x,y: x+y #코드를 간결하게 하기 위함. add2(10, 20) #30
strings = ['bob', 'charles', 'alexander3', 'teddy'] # strings.sort(key=str_len) strings.sort(key = lambda s:len(s)) print(strings) #['bob', 'teddy', 'charles', 'alexander3']
# filter 함수:
특정 조건을 만족하는 요소만 남기고 필터링 함
# 짝수인지 아닌지 확인. def even(n): return n%2 == 0 even(5) # false #짝수만 출력. nums = [1,2,3,7,8,9, 14, 42] list(filter(lambda n:n%2 ==0, nums)) # [2, 8, 14, 42]
# map 함수:
각 원소를 주어진 수식에 따라 변형하여 새로운 리스트를 반환
# 주어진 리스트의 제곱을 한 숫자로 새로운 리스트 생성 nums = [1,2,3,7,8,9, 14, 42, 13, 17] list(map(lambda n: n**2, nums)) #[1, 4, 9, 49, 64, 81, 196, 1764, 169, 289] #주어진 리스트가 짝수일 경우 T, 아닐경우 F로 반환하여 새로운 리스트 생성 list(map(lambda n:n%2==0, nums)) #[False, True, False, False, True, False, True, True, False, False]
# reduce 함수:
차례대로 앞 2개의 원소를 가지고 연산. 연산의 결과가 다음 연산의 입력으로 진행됨.
따라서 마지막까지 진행되면 최종 출력은 한개의 값.
import functools a = list(range(1,11)) #리스트 내의 모든 숫자의 합을 구하기 functools.reduce(lambda x,y: x+y ,a) #55
<함수 연습문제>
1. 주어진 숫자 리스트의 평균을 구하는 함수 출력.
def mean(nums): _sum = 0 for i in nums: _sum += i return _sum / len(nums) print(mean([4,5,6])) #5 print(mean([1,2,3,4,5])) #3 means2 = lambda *args: sum(args)/len(args) print(means2(4,5,6)) #5
2. 해당 숫자가 소수인지 아닌지 판별.
#소수란 1과 자기 자신으로만 나눠지는 수 #입력: 양의 정수 1개 #출력: boolean (소수:True , 합성수: False) def is_prime(nums): for i in range(2, nums): if nums%i == 0: return False return True print(is_prime(11)) #T print(is_prime(77)) #F print(is_prime(13)) #T
3. 2부터 해당 숫자 사이에 소수가 몇개 있는지 출력.
#입력: 양의 정수 1개 #출력: 2와 입력된 수 사이의 소수의 개수 #2, 3, 4, 5, 6, 7 => 4 #2, 3, 4, 5 => 3 def num_prime(nums): count = 0 for i in range(2, nums+1): if is_prime(i): count += 1 return count print(num_prime(7)) #4 print(num_prime(100)) #25
반응형'파이썬 Python' 카테고리의 다른 글
[파이썬] 10. numpy 모듈 _ ndarray (0) 2019.12.23 [파이썬] 8. 파이썬 함수 정의와 호출 - 변수의 범위 (지역변수와 전역변수), 가변길이 인자 (*args, **kwargs), format 함수 (0) 2019.12.04 [파이썬] 7. 파이썬 함수 정의와 호출 - 함수의 parameter, return (함수 파라미터와 리턴) (0) 2019.12.04 [파이썬] 6. 반복문 while / for 의 이해 (feat. break와 continue) (1) 2019.11.25 [파이썬] 5. 조건문 if / elif/ else (0) 2019.11.25