함수의 이해 및 사용 (Lambda 함수의 이해)
Lambda 함수 이해 및 사용
- Lambda 함수
- 단일문으로 표현되는 익명 함수
- 익명함수란 이름이 없는 구현체만 존재하는 간단한 함수를 의미
- 코드 상에서 한번만 사용되는 기능이 있을 때, 굳이 함수로 만들지 않고 1회성으로 만들어서 쓸 때 사용
def square2(x):
return x ** 2
square = lambda x: x ** 2
print(square(5))
def add(x, y):
return x + y
add2 = lambda x, y: x + y
print(add2(10, 20))
def str_len(s):
return len(s)
strings = ['bob', 'charles', 'alexander3', 'teddy']
strings.sort(key=lambda s: len(s))
print(strings)
filter, map, reduce
- lambda가 유용하게 사용되는 3가지 대표적 함수
- 함수형 프로그래밍의 기본 요소이기도 함
- filter : 특정 조건을 만족하는 요소만 남기고 필터링
- map : 각 원소를 주어진 수식에 따라 변형하여 새로운 리스트를 반환
- reduce : 차례대로 앞 2개의 원소를 가지고 연산. 연산의 결과가 또 다음 연산의 입력으로 진행됨. 따라서 마지막까지 진행되면 최종 출력은 한개의 값만 남게 됨.
def even(n):
return n % 2 == 0
nums = [1, 2, 3, 6, 8, 9, 10, 11, 13, 15]
print(list(filter(lambda n: n % 2 == 0, nums)))
nums = [1, 2, 3, 6, 8, 9, 10, 11, 13, 15]
print(list(map(lambda n: n ** 2, nums)))
import functools
a = [1, 3, 5, 8]
print(functools.reduce(lambda x, y: x + y, a))
print(functools.reduce(lambda x, y: x * y, a))
함수 연습문제
- 주어진 숫자 리스트의 평균을 구하는 함수를 출력하시오
- 해당 숫자가 소수인지 아닌지 판별하시오.
- 2부터 해당 숫자사이에 소수가 몇개인지 출력하는 함수를 구하시오
def mean(nums):
_sum = 0
for i in nums:
_sum += i
return _sum / len(nums)
def mean2(nums):
return sum(nums) / len(nums)
print(mean([1, 2, 3]))
print(mean2([1, 2, 3, 4, 5]))
print(mean([1, 2, 3.0, 3.9, 8.7]))
def is_prime(num):
for i in range(2, num):
if num % i == 0:
return False
return True
print(is_prime(89))
print(is_prime(100))
def num_prime(num):
count = 0
for i in range(2, num + 1):
if is_prime(i):
count += 1
return count
print(num_prime(7))
print(num_prime(5))
print(num_prime(100))
파이썬 모듈
모듈의 이해 및 사용과 import 방법
모듈 임포트
- 그동안 사용했던 함수들 처럼, 다양한 기능들이 미리 함수로 구현되어 모듈 형태로 제공
- 대표적으로 추후 과정에서 사용하게 될 아래의 모듈들이 존재
- requests - HTTP 요청/응답 모듈
- numpy - 수치해석 모듈
- pandas - 데이터 분석 모듈
import
- import를 사용하여 해당 모듈 전체를 import
import math
print(math.pi)
print(math.cos(100))
from import
from math import pi
from math import cos
print(pi)
print(cos(100))
* 임포트
- 해당 모듈내에 정의된 모든 것을 import
- 일반적으로 사용이 권장되지 않음
from math import *
print(sin(100))
print(e)
as
- 모듈 import 시, alias(별명) 지정가능
import math as m
print(m.exp(3))
print(m.cos(100))