Python/Fundamentals

λ ν‘œν˜„μ‹

metamong 2022. 8. 21.

🀘🏻 νŒŒμ΄μ¬μ—μ„œ λ ν‘œν˜„μ‹μ„ μ΄μš©ν•˜λ©΄ ν•¨μˆ˜λ₯Ό κ°„λ‹¨ν•˜κ²Œ μž‘μ„±ν•  수 μžˆλ‹€. 즉, νŠΉμ •ν•œ κΈ°λŠ₯을 μˆ˜ν–‰ν•˜λŠ” ν•¨μˆ˜λ₯Ό 단 ν•œ 쀄에 μž‘μ„±ν•  수 μžˆλ‹€λŠ” 게 큰 νŠΉμ§•

#lambda ν‘œν˜„μ‹μœΌλ‘œ κ΅¬ν˜„ν•œ λ”ν•˜κΈ° ν•¨μˆ˜
print((lambda a, b: a +b)(3,7))

 

🀘🏻 μ“°λŠ” 방법

β‘  특수문자 lambda ν‚€μ›Œλ“œ

β‘‘ λ§€κ°œλ³€μˆ˜λ₯Ό μ­‰ λ‚˜μ—΄

β‘’ 이후 콜둠(:) μž…λ ₯

β‘£ μž…λ ₯된 λ§€κ°œλ³€μˆ˜λ₯Ό λ”ν•œ 결괏값 - 리턴될 좜λ ₯ κ²°κ³Όλ₯Ό μ½œλ‘ (:) λ‹€μŒμ— μž…λ ₯ - 좜λ ₯

 

β€» λ³€μˆ˜λ₯Ό μƒˆλ‘œ μ‚¬μš©ν•΄μ„œ returnν•˜λŠ” 경우 lambda ν‘œν˜„μ‹μ„ μ‚¬μš©ν•  수 μ—†μŒ β€»

 

🀘🏻 ν•¨μˆ˜ 자체λ₯Ό μž…λ ₯으둜 λ°›λŠ” ν•¨μˆ˜, λ˜λŠ” ν•¨μˆ˜ μžμ²΄κ°€ return문으둜 μ‚¬μš©λ˜λŠ” ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•  λ•Œ, λ˜λŠ” ν•¨μˆ˜ μžμ²΄κ°€ 맀우 간단해 ν•œ 번만 μ‚¬μš©ν•˜κ³  말 λ•Œ 주둜 lambda 식을 이용

 

ex) return문에 lambda ν‘œν˜„μ‹μ΄ μ‚¬μš©λ˜λŠ” 예 - doubler function

def myfunc(n):
  return lambda a : a * n

mydoubler = myfunc(2)

print(mydoubler(11)) #22

 

🀘🏻 ex1) λ‚΄μž₯ν•¨μˆ˜μ—μ„œ 자주 μ‚¬μš©

 

- ν•΄λ‹Ή arrayλ₯Ό key값을 κΈ°μ€€μœΌλ‘œ λΆ„λ₯˜ν•˜κ³ μž ν•  λ•Œ,

array = [('ryan', 95), ('charlie', 32), ('bethany', 38)]

 

- 직접 def둜 ν•¨μˆ˜λ₯Ό λ§Œλ“€μ–΄ key의 속성을 μ΄μš©ν•΄ sortν•  수 μžˆμ§€λ§Œ,

def my_key(x):
    return x[1]

print(sorted(array, key = my_key))

 

- lambdaλ₯Ό μ΄μš©ν•΄ λ³„λ„μ˜ ν•¨μˆ˜ μ„ μ–Έ 없이,  단 ν•œ μ€„λ‘œ μ‚¬μš© κ°€λŠ₯

print(sorted(array, key = lambda x: x[1]))

 

🀘🏻 ex2) λ˜λŠ” μ—¬λŸ¬ 개의 list에 ν•œ λ²ˆμ— μ μš©ν•  ν•¨μˆ˜λ₯Ό λ§Œλ“€ λ•Œλ„ μ‚¬μš©ν•˜κΈ°λ„ ν•œλ‹€

list1 = [1,2,3,4,5]
list2 = [6,7,8,9,10]

result = map(lambda a, b: a+b, list1, list2)

print(list(result))
#[7, 9, 11, 13, 15]

* 좜처) μ΄μ½”ν…Œ 2021 https://youtu.be/m-9pAwq1o3w

* 좜처) w3school https://www.w3schools.com/python/python_lambda.asp

'Python > Fundamentals' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€

(useful) Methods  (0) 2022.11.13
python standard libraries  (0) 2022.08.22
list, string, tuple, dictionary, set (iterables)  (0) 2022.08.19
File/Exception/Log Handling  (0) 2022.07.14
python OOP  (0) 2022.07.07

λŒ“κΈ€