데이터분석/Python 파이썬 1달만에 마스터하기

Day12 가변 매개변수, 람다함수, 콜백함수, 내장함수 [파이썬 1달만에 마스터하기]

어반닥터 2024. 1. 19. 11:05
728x90
반응형
가변 매개변수 (*args)
설명: args는 여러 개의 위치 인수를 받을 수 있게 해주며,
함수에서 몇 개의 인수를 받을 지 미리 정할 수 없을 때 유용함.

예시: 아래 toppings는 여러개의 인수를 받을 수 있음

(출생년도에 대한 띠 zodiac 알려주기 예시)

def zodiac(*years):
    sign = ['닭띠','개띠','돼지띠','쥐띠','소띠','호랑이띠','토끼띠','용띠','뱀띠','말띠','양띠','원숭이띠']
    # newList = []
    # for i in years:
    #     newList.append(sign[i - 1993])
    # return newList
    return [sign[i-1993] for i in years]  # 위 커멘드들의 요약버전



a = zodiac(1993,1994,1999,2002)
print(a)    #['닭띠', '개띠', '토끼띠', '말띠']

 

람다함수
: 간결하고 익명의 한 줄 함수로, 작은 연산이나 변환에 적합

내용 요약
정의: 람다 함수는 이름이 없는 익명 함수로, 간단한 함수를 한 줄로 작성할 수 있게 해주며,
주로 작은 연산이나 데이터 변환에 사용됨. 

차이점: 일반 함수는 def 키워드를 사용하여 정의되고 이름을 가지며, 복잡한 로직을 포함할 수 있음.
반면, 람다 함수는 간단한 표현식을 위해 사용되며, lambda 키워드로 정의되고 이름을 가지지 않음.
plus = lambda a,b: a+b
result = plus (5,7)
print(result)       #12

minus = lambda a,b: a-b
result2 = minus(5,2)
print(result2)      #3

mult = lambda a,b,:a*b
result3 = mult(4,5)
print(result3)      #20 

 

콜백함수
다른 함수에 전달되어 특정 이벤트나 조건 후에 실행되는 함수 g(f(x))

정의:
1. 콜백 함수는 일반적인 함수처럼 정의되지만, 다른 함수에 인자로 전달됨
2. 콜백 함수를 정의하고, 다른 함수에 인자로 전달하여 호출함
3. 파이썬에서는 모든 함수가 일급 객체이므로, 함수를 변수에 할당하거나 다른 함수의 인자로 전달 할 수 있음
eggs=['🥚','🥚','🥚']
def cookEggs(eggs,index,recipe):
    recipe(eggs,index)
def makeFry(eggs,index):
    eggs[index]= '🍳'
def makeSandwich(eggs,index):
    eggs[index]='🥪'

cookEggs(eggs,0,makeFry)
cookEggs(eggs,1,makeSandwich)
print(eggs)  # ['🍳', '🥪', '🥚']
내장 함수
내장 함수 3대장 (map, filter, reduce): 데이터 컬렉션을 처리하는 강력한 파이썬 내장 함수 트리오임.
내장 함수는 파이썬 인터프리터에 기본적으로 내장되어 있는 함수들을 의미하며, 별도의 모듈을 임포트하지 않고도 사용할 수 있음. 

파이썬 내장 함수의 장점
- 사용 편의성: 별도 설치나 임포트 없이 사용 가능
- 성능 최적화: 파이썬의 내부적 최적화로 인해 빠른 실행 속도 제공
- 범용성: 다양한 프로그래밍 상황에 적용 가능

# map (치환)
# filter (필터링)
# reduce (누적)

(map함수 예시)

numList = [1,2,3,4,5]
a = map(lambda x: x**2,numList)
b = map(lambda x: x+100,numList)
c = map(lambda x: x**2+100,numList)
print(list(a)) # [1, 4, 9, 16, 25]
print(list(b)) # [101, 102, 103, 104, 105]
print(list(c)) # [101, 104, 109, 116, 125]

coffeePriceList = [2000,3000,3500,4000]
# map을 사용해서 '3000원','4000원','4500원','5000원' 으로 바꾸려면~
d = map(lambda x: str(x+1000)+'원',coffeePriceList)
print(list(d)) # ['3000원', '4000원', '4500원', '5000원']

fruits = ['apple','banana','mango','avocado']
e = map(lambda x: len(x),fruits)
print(list(e)) # [5, 6, 5, 7]

(filter 함수 예시)

numList = [1,2,3,4,5,6,7,8,9,10]
filter(lambda x: x>5,numList)    # 5 이상 필터
filter(lambda x: x%2==0,numList) # 짝수 필터

fruits = ['apple','banana','mango','avocado']
d = filter (lambda x: 'o' in x,fruits)
print(list(d)) # ['mango', 'avocado']
# 6글자 이상인 애들만 걸러주고, 그 앞에 '🥪' 붙이기
a = filter(lambda x: len(x)>5, fruits) #6자 이상 필터
b = map(lambda x: "🥪"+x, a )  #🥪 붙이기 맵
print(list(b))   #['🥪banana', '🥪avocado']

(reduce 함수 예시)

numbers = [1,2,3,4,5]
result = reduce(lambda x,y: x+y,numbers)    # x y 두개가 들어감.
result2 = reduce(lambda x,y: x+y,numbers)
print(result)    # 15
반응형