Language

[Python] lambda

geum 2021. 2. 9. 01:06

์•„์ง๋„ ๋žŒ๋‹ค์‹์ด ์†์— ์•ˆ ์ต์–ด๊ฐ€์ง€๊ณ  ์•Œ๊ณ ๋ฆฌ์ฆ˜ 20๋ฌธ์ œ ํ’€์–ด์•ผ 1๋ฒˆ ์“ธ๊นŒ ๋ง๊นŒ์ธ๋ฐ, ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ํšจ์œจ์„ฑ ๋ฌธ์ œ ๋•Œ๋ฌธ์— ์ข…์ข… ๋žŒ๋‹ค์‹ ์จ์•ผ ํ•  ๋•Œ๊ฐ€ ์žˆ์–ด์„œ ์ด๋ฒˆ ๊ธฐํšŒ์— ์ •๋ฆฌํ•ด๋ณด๋ ค๊ณ  ํ•œ๋‹ค.

lambda ํ‘œํ˜„์‹

lambda ๋งค๊ฐœ๋ณ€์ˆ˜: ์‹

์กฐ๊ฑด๋ถ€ ํ‘œํ˜„์‹

lambda ๋งค๊ฐœ๋ณ€์ˆ˜: ์‹1 if ์กฐ๊ฑด์‹1 else ์กฐ๊ฑด์‹2

ex) list(map(lambda x: str(x) if x % 3 == 0 else x, a)) → a๋ผ๋Š” ๋ฆฌ์ŠคํŠธ๊ฐ€ ์žˆ๋‹ค๊ณ  ํ•  ๋•Œ 3์˜ ๋ฐฐ์ˆ˜์ธ ๊ฐ’๋งŒ ๋ฌธ์ž์—ด๋กœ ๋ณ€ํ™˜

 

โญ ์ฃผ์˜ โญ

- if๋ฅผ ์‚ฌ์šฉํ–ˆ๋‹ค๋ฉด else๋„ ๋ฐ˜๋“œ์‹œ ์žˆ์–ด์•ผ ํ•จ

- elif๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์œผ๋ฉฐ if ~ else๋ฅผ ์—ฐ์†์ ์œผ๋กœ ์‚ฌ์šฉํ•ด์•ผ ํ•จ

def vs lambda

# def
def plus_ten(x):
    return x+10
# lambda expression
plus_ten = lambda x: x+10

∴ ๊ฐ™์€ ๊ธฐ๋Šฅ์„ ์ˆ˜ํ–‰ํ•˜์ง€๋งŒ ํ‘œํ˜„ ๋ฐฉ์‹์ด ๋‹ค๋ฆ„

 

def ํ˜•ํƒœ์˜ ํ•จ์ˆ˜์™€ ๋žŒ๋‹ค ํ‘œํ˜„์‹ ๋น„๊ต(https://dojang.io/)

 

ํŠน์ง•

- ๋žŒ๋‹ค์‹ ์•ˆ์—์„œ๋Š” ์ƒˆ๋กœ์šด ๋ณ€์ˆ˜๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์—†์Œ

(lambda x: y = 10; x + y)(1)
SyntaxError: invalid syntax

 

- ์‹ ๋ฐ–์˜ ๋ณ€์ˆ˜๋Š” ์‚ฌ์šฉ ๊ฐ€๋Šฅ

y=10
(lambda x: x + y)(1)
# result = 11

 

- ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ ์—†๋Š” ํ•จ์ˆ˜๋กœ ์ƒ์„ฑ ๊ฐ€๋Šฅ : (lambda: ๋ฐ˜ํ™˜๊ฐ’)( )

(lambda : 1)()
# result = 1

x = 10
(lambda : x)()
# result = 10

 

map/reduce/filter

1. map(๋žŒ๋‹ค์‹, ๋ฆฌ์ŠคํŠธ)

list(map(lambdax: x**2, range(5)))
# result = [0,1,4,9,16]

 

2. reduce(ํ•จ์ˆ˜, ๋ฌธ์ž์—ด/ํŠœํ”Œ/๋ฆฌ์ŠคํŠธ)

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

 

* 10์ด ๋‚˜์˜ค๋Š” ๊ณผ์ •

์ฒซ๋ฒˆ์งธ x, y : x=0, y=1 → x+y=1

๋‘๋ฒˆ์งธ x, y : x=1(์ฒซ๋ฒˆ์งธ ๊ณผ์ •์—์„œ x+y์˜ ๊ฐ’), y=2 → x+y=3

์„ธ๋ฒˆ์งธ x, y : x=3(๋‘๋ฒˆ์งธ ๊ณผ์ •์—์„œ x+y์˜ ๊ฐ’), y=3 → x+y=6

๋„ค๋ฒˆ์งธ x, y : x=6(์„ธ๋ฒˆ์งธ ๊ณผ์ •์—์„œ x+y์˜ ๊ฐ’), y=4 → x+y=10

 

 

3. filter(ํ•จ์ˆ˜, ๋ฐ˜๋ณต ๊ฐ€๋Šฅํ•œ ๊ฐ์ฒด) : ํŠน์ • ์กฐ๊ฑด์— ๋งž๋Š” ์š”์†Œ๋ฅผ ์ด์šฉํ•ด ์ƒˆ๋กœ์šด ๊ฐ์ฒด ์ƒ์„ฑ

list(filter(lambda x: x > 5 and x < 10, a))
# ๋ฐ˜๋ณต ๊ฐ€๋Šฅํ•œ ๊ฐ์ฒด a์—์„œ 5 ์ดˆ๊ณผ 10 ๋ฏธ๋งŒ์ธ ๊ฐ’๋งŒ ๊ฐ€์ ธ์˜ด

 

sort()/sorted()

- sort()์™€ sorted()๊ฐ€ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” key ์ธ์ž์— ํ•จ์ˆ˜๋ฅผ ๋„˜๊ฒจ์ฃผ๋ฉด ์ •๋ ฌ ๊ธฐ์ค€์€ ํ•จ์ˆ˜์˜ ๋ฐ˜ํ™˜๊ฐ’

- ์ •๋ ฌ ๊ธฐ์ค€์ด ์—ฌ๋Ÿฌ ๊ฐœ์ผ ๊ฒฝ์šฐ๋Š” ํŠœํ”Œ ํ˜•์‹์œผ๋กœ ์ˆœ์„œ๋ฅผ ์ง€์ •ํ•ด์ฃผ๋ฉด ๋จ

 

ex) sorted(ex, key = lambda x : (x[1], -x[0]))์—์„œ์˜ ์ •๋ ฌ ์ˆœ์„œ

โ‘  ex์˜ ๋‘๋ฒˆ์งธ ์š”์†Œ๋ฅผ ์ด์šฉํ•ด ์˜ค๋ฆ„์ฐจ์ˆœ ์ •๋ ฌ

โ‘ก ex์˜ ์ฒซ๋ฒˆ์งธ ์š”์†Œ๋กœ ๋‚ด๋ฆผ์ฐจ์ˆœ ์ •๋ ฌ์„ ํ•˜๊ฒ ๋‹ค๋Š” ์˜๋ฏธ

 

 

 

๐Ÿ™ ํ‹€๋ฆฐ ๋‚ด์šฉ์ด๋‚˜ ์˜คํƒ€๊ฐ€ ์žˆ๋‹ค๋ฉด ๋Œ“๊ธ€๋กœ ํŽธํ•˜๊ฒŒ ์•Œ๋ ค์ฃผ์„ธ์š”!

'Language' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[Python] ์˜ˆ์™ธ ์ฒ˜๋ฆฌ  (0) 2021.08.19
[Python] ํŒŒ์ผ ์ฝ๊ธฐ/์“ฐ๊ธฐ  (0) 2021.08.18
[Python] Method #1 : method, self  (0) 2020.09.27