[파이썬/python] λžŒλ‹€ν•¨μˆ˜ (lambda)

2021. 3. 12. 00:23

λžŒλ‹€ν•¨μˆ˜(lambda)λŠ” λŸ°νƒ€μž„μ— μƒμ„±ν•΄μ„œ μ‚¬μš©ν•  수 μžˆλŠ” 읡λͺ… ν•¨μˆ˜λ‘œ, μ“°κ³  λ²„λ¦¬λŠ” μΌμ‹œμ μΈ ν•¨μˆ˜μ΄λ‹€.

κ°„λ‹¨ν•œ κΈ°λŠ₯을 일반적인 ν•¨μˆ˜μ™€ 같이 μ •μ˜ν•΄λ‘κ³  μ“°λŠ” 것이 μ•„λ‹ˆλΌ ν•„μš”ν•œ κ³³μ—μ„œ μ¦‰μ‹œ μ‚¬μš©ν•˜κ³  버릴 수 μžˆλ‹€.

κ·Έλ ‡κΈ° λ•Œλ¬Έμ— λžŒλ‹€ν•¨μˆ˜λŠ” κ°„λ‹¨ν•œ ν•¨μˆ˜λ₯Ό ν•œλ²ˆλ§Œ μ‚¬μš©ν•  λ•Œ μ‚¬μš©ν•œλ‹€.

 

lambda 인자 : ν‘œν˜„μ‹

lambdaλŠ” lambda 인자 : ν‘œν˜„μ‹μ˜ ν˜•νƒœλ‘œ μ‚¬μš©ν•œλ‹€.

ν•¨μˆ˜ 이름도 μ—†κ³  return도 ν•„μš”μ—†λ‹€.

λžŒλ‹€ν•¨μˆ˜κ°€ μ΄μš©λ˜λŠ” 곳의 λŒ€ν‘œμ μΈ μ˜ˆλ‘œλŠ” map(), reduce(), filter()κ°€ μžˆλ‹€.

 

 

map()

map(ν•¨μˆ˜, 리슀트)

map(lambda x: x**2, range(5))
>>> 0 1 4 9 16

map은 map(ν•¨μˆ˜, 리슀트)의 ν˜•νƒœλ‘œ μ‚¬μš©λ˜λ©°,

ν•¨μˆ˜λ₯Ό 리슀트의 λͺ¨λ“  μš”μ†Œμ— λŒ€ν•΄ μ μš©ν•œλ‹€.

μœ„μ˜ μ˜ˆμ‹œλŠ” ν•¨μˆ˜μžλ¦¬μ— 숫자λ₯Ό μ œκ³±ν•˜λŠ” λžŒλ‹€μ‹μ„ 톡해

ν•΄λ‹Ήλ²”μœ„ 0λΆ€ν„° 4κΉŒμ§€μ˜ 숫자λ₯Ό μ œκ³±ν•œλ‹€λŠ” μ˜λ―Έμ΄λ‹€.

 

reduce()

reduce(ν•¨μˆ˜, 리슀트)

from functools import reduce
reduce(lambda x,y : x+y, [0,1,2,3,4])
>>> 10

reduceλŠ” reduce(ν•¨μˆ˜, 리슀트)의 ν˜•νƒœλ‘œ μ‚¬μš©λ˜λ©°,

리슀트의 각 μš”μ†Œλ₯Ό ν•¨μˆ˜λ‘œ μ²˜λ¦¬ν•œ λ’€ 이전 결과와 λˆ„μ ν•΄μ„œ λ°˜ν™˜ν•œλ‹€.

reduceλ₯Ό μ‚¬μš©ν•˜κΈ° μœ„ν•΄ functools λͺ¨λ“ˆμ—μ„œ reduce ν•¨μˆ˜λ₯Ό κ°€μ Έμ™€μ•Όν•œλ‹€.

μœ„μ˜ μ˜ˆμ‹œλŠ” ν•¨μˆ˜μžλ¦¬μ— 두 수λ₯Ό λ”ν•˜λŠ” λžŒλ‹€μ‹μ„ 톡해

μš°μ„  μ²˜μŒμ— 리슀트의 두 수λ₯Ό λ”ν•œ λ‹€μŒ κ·Έ κ²°κ³Όλ₯Ό λ‹€μŒ μˆ˜μ™€ 더해 λˆ„μ ν•˜μ—¬ κ³„μ‚°ν•œλ‹€.

결과적으둜 리슀트의 λͺ¨λ“  수λ₯Ό λ‹€ λ”ν•œ 값을 λ°˜ν™˜ν•˜κ²Œ λœλ‹€.

 

filter()

filter(ν•¨μˆ˜, 리슀트)

list(filter(lambda x: x%3 == 0, [1,2,3,4,5,6])
>>> [3,6]

filterλŠ” filter(ν•¨μˆ˜, 리슀트)의 ν˜•νƒœλ‘œ μ‚¬μš©λ˜λ©°,

리슀트의 각 μš”μ†Œ 쀑 ν•¨μˆ˜μ— ν•΄λ‹Ήν•˜λŠ” μš”μ†Œλ§Œ λ¦¬μŠ€νŠΈν™”ν•˜μ—¬ λ°˜ν™˜ν•œλ‹€.

μœ„μ˜ μ˜ˆμ‹œλŠ” ν•¨μˆ˜μžλ¦¬μ— 3으둜 λ‚˜λˆˆ λ‚˜λ¨Έμ§€κ°€ 0인 수λ₯Ό λ°˜ν™˜ν•˜λŠ” λžŒλ‹€μ‹μ„ 톡해

리슀트의 μš”μ†Œ 쀑 3의 λ°°μˆ˜λ§Œμ„ λ¦¬μŠ€νŠΈν™”ν•˜μ—¬ 좜λ ₯ν•œλ‹€.

728x90

BELATED ARTICLES

more