๐Ÿ“šSTUDY/๐ŸŽ‡๋‹คํ• (dafit.me)

[DF913] 04. Lambda๋ฅผ ๋น„๋กฏํ•œ ์—ฌ๋Ÿฌ ํ•จ์ˆ˜

ํ•ด๋Š”์„  2020. 2. 10. 21:37

04. Lambda๋ฅผ ๋น„๋กฏํ•œ ์—ฌ๋Ÿฌ ํ•จ์ˆ˜

http://www.dafit.me/question/?q=YToxOntzOjEyOiJrZXl3b3JkX3R5cGUiO3M6MzoiYWxsIjt9&bmode=view&idx=2968780&t=board

 

[DF913] ํŒŒ์ด์ฌ ๊ธฐ์ดˆ ํ›ˆ๋ จ 10์ œ : ๋‹คํ•, ๋ฐ์ดํ„ฐ์‚ฌ์ด์–ธ์Šค ์—ฐ์Šต๋ฌธ์ œ

๐Ÿ”ฅ ๋ฌธ์ œ ์„ค๋ช…ํŒŒ์ด์ฌ์˜ ๊ธฐ์ดˆ ๋ฌธ๋ฒ•์„ ํ›ˆ๋ จํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋ณธ ์—ฐ์Šต๋ฌธ์ œ 10์ œ์ž…๋‹ˆ๋‹ค. (ver.3.6.) ๐Ÿ”ฅ ์ถ”์ฒœ ๋Œ€์ƒ ๋ฐ ํ•™์Šต ๋ชฉํ‘œํŒŒ์ด์ฌ ๊ณต๋ถ€๋ฅผ ์ตœ๊ทผ์— ์‹œ์ž‘ํ•˜๊ฑฐ๋‚˜ ๋งˆ์นœ ์ž.→ ์ด ๋‚œ์ด๋„ ์ˆ˜์ค€์„ ํ•ด๊ฒฐํ•ด๋‚ผ ์ˆ˜ ์žˆ๋„๋ก ๊ณต๋ถ€ํ•˜๋Š” ๊ฒƒ์„ ์ถ”์ฒœํ•ฉ๋‹ˆ๋‹ค.("๋‚ด๊ฐ€ ์ตœ๊ทผ์— ํŒŒ์ด์ฌ์„ ๊ณต๋ถ€ํ–ˆ๋Š”๋ฐ, ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์„๊นŒ?")ํŒŒ์ด์ฌ ๊ธฐ์ดˆ ๋ฌธ๋ฒ•์„ ๋‹ค์‹œ ์—ฐ์Šต ๋ฐ ๋ณต์Šตํ•ด์•ผํ•  ํ•„์š”์„ฑ์„ ๋А๋ผ๋Š” ์ž.→ ํŒŒ์ด์ฌ์˜ ๊ธฐ์ดˆ์ ์ธ ๋‚ด์šฉ์„ ํ›ˆ๋ จํ•จ์œผ๋กœ์จ, ์ˆ™๋ จ๋„๋ฅผ ๋†’์ด๋Š” ๊ฒƒ์„ ๋ชฉ์ ์œผ๋กœ ํ•ฉ๋‹ˆ๋‹ค.๐Ÿ”ฅ ๋‚œ์ด๋„โ˜…

www.dafit.me

Lambda....... ์ˆ˜์—…์—์„œ๋Š” ์ด๊ฑธ ๊ทธ๋ƒฅ ๋„˜๊ฒผ๋˜ ๊ฑฐ ๊ฐ™๊ณ  ์‹ค์ œ๋กœ ๋”ฐ๋กœ ๊ณต๋ถ€ํ•  ๋•Œ๋„ ๋ญ” ์†Œ๋ฆฐ์ง€ ๋ชจ๋ฅด๊ฒ ์–ด์„œ ๊ทธ๋ƒฅ ๋„˜๊ฒผ์—ˆ๋Š”๋ฐ Lambda๋ฅผ ์ด์šฉํ•ด์„œ ํ‘ธ๋Š” ๋ฌธ์ œ๊ฐ€ ๋‚˜์™”๋‹ค. ์ด์ œ๋Š” ํ”ผํ•˜์ง€ ๋ง๊ณ  ๋‹ค์‹œ ๋ณผ ๋•Œ๊ฐ€ ์™”๋‹ค.

 

์ด ๋ฌธ์ œ์—์„œ๋Š” 4๊ฐœ์˜ ํ•จ์ˆ˜๋ฅผ ์š”ํ•˜๋Š”๋ฐ, ์ผ๋‹จ 4๊ฐ€์ง€ ํ•จ์ˆ˜๋ฅผ ์‚ดํŽด๋ณด๋„๋ก ํ•˜๊ฒ ๋‹ค.

 

(1) list()

์ธ์ž๋ฅผ ๋ฆฌ์ŠคํŠธ๋กœ ๋ฐ”๊ฟ”์ฃผ๋Š” ํ•จ์ˆ˜๋‹ค.

 

(2) filter(function, iterable)

์ด๋ฆ„๊ณผ ๋น„์Šทํ•˜๊ฒŒ ์‚ฌ์šฉ์ž๊ฐ€ ์›ํ•˜๋Š” ์กฐ๊ฑด์— ๋งž์ถฐ์„œ '๊ฑธ๋Ÿฌ'์ฃผ๋Š” ํ•จ์ˆ˜๋‹ค. 

์ธ์ž๋กœ 2๊ฐ€์ง€๊ฐ€ ํ•„์š”ํ•œ๋ฐ ์กฐ๊ฑด๊ณผ iterableํ•œ ๋ฐ์ดํ„ฐ๋‹ค.

์กฐ๊ฑด์€ ํ•จ์ˆ˜๋ฅผ ์ •์˜ํ•˜๊ฑฐ๋‚˜, lambda๋ฅผ ์ด์šฉํ•ด์„œ ์„ค์ •ํ•ด ์ค„ ์ˆ˜ ์žˆ๋‹ค.

https://bluese05.tistory.com/66

 

python - filter ํ•จ์ˆ˜. ์–ด๋ ต์ง€ ์•Š์•„์š”

python - filter() filter ํ•จ์ˆ˜๋Š” built-in ํ•จ์ˆ˜๋กœ list ๋‚˜ dictionary ๊ฐ™์€ iterable ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ํŠน์ • ์กฐ๊ฑด์— ์ผ์น˜ํ•˜๋Š” ๊ฐ’๋งŒ ์ถ”์ถœํ•ด ๋‚ผ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ํ•จ์ˆ˜์ด๋‹ค. ๋จผ์ €, python docs ์˜ filter ์— ๋Œ€ํ•œ ์ •์˜๋ฅผ ๋ณด๋ฉด..

bluese05.tistory.com

 

(3) Lambda

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

ํ˜•์‹์œผ๋กœ ์‚ฌ์šฉํ•œ๋‹ค. 

๊ฐ„๋‹จํ•˜๊ฒŒ ์ผํšŒ์„ฑ ํ•จ์ˆ˜๋ฅผ ๋งŒ๋“ค ๋•Œ ์ฃผ๋กœ ์‚ฌ์šฉ๋˜๋ฉฐ ์ธ์ˆ˜๋กœ ์ฃผ๋กœ ์‚ฌ์šฉ๋œ๋‹ค.

๋” ์ž์„ธํ•œ ์„ค๋ช…์€ ์•„๋ž˜ ๋งํฌ๋ฅผ ์ฐธ๊ณ ํ•˜๋ฉด ์ข‹๋‹ค.

https://dojang.io/mod/page/view.php?id=2359

 

ํŒŒ์ด์ฌ ์ฝ”๋”ฉ ๋„์žฅ: 32.1 ๋žŒ๋‹ค ํ‘œํ˜„์‹์œผ๋กœ ํ•จ์ˆ˜ ๋งŒ๋“ค๊ธฐ

Unit 32. ๋žŒ๋‹ค ํ‘œํ˜„์‹ ์‚ฌ์šฉํ•˜๊ธฐ ์ง€๊ธˆ๊นŒ์ง€ def๋กœ ํ•จ์ˆ˜๋ฅผ ์ •์˜ํ•ด์„œ ์‚ฌ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฒˆ์—๋Š” ๋žŒ๋‹ค ํ‘œํ˜„์‹์œผ๋กœ ์ต๋ช… ํ•จ์ˆ˜๋ฅผ ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ๋žŒ๋‹ค ํ‘œํ˜„์‹์€ ์‹ ํ˜•ํƒœ๋กœ ๋˜์–ด ์žˆ๋‹ค๊ณ  ํ•ด์„œ ๋žŒ๋‹ค ํ‘œํ˜„์‹(lambda expression)์ด๋ผ๊ณ  ๋ถ€๋ฆ…๋‹ˆ๋‹ค. ํŠนํžˆ ๋žŒ๋‹ค ํ‘œํ˜„์‹์€ ํ•จ์ˆ˜๋ฅผ ๊ฐ„ํŽธํ•˜๊ฒŒ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ์–ด์„œ ๋‹ค๋ฅธ ํ•จ์ˆ˜์˜ ์ธ์ˆ˜๋กœ ๋„ฃ์„ ๋•Œ ์ฃผ๋กœ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. 32.1 ๋žŒ๋‹ค ํ‘œํ˜„์‹์œผ๋กœ ํ•จ์ˆ˜ ๋งŒ๋“ค๊ธฐ ๋žŒ๋‹ค ํ‘œํ˜„์‹์„ ์‚ฌ์šฉํ•˜๊ธฐ ์ „์— ๋จผ์ € ์ˆซ์ž๋ฅผ ๋ฐ›์€ ๋’ค 10์„ ๋”ํ•ด

dojang.io

 

(4) map(function, iterable)

์›๋ณธ ๋ฆฌ์ŠคํŠธ๋ฅผ ๋ณ€๊ฒฝํ•˜์ง€ ์•Š๊ณ , ์ƒˆ ๋ฆฌ์ŠคํŠธ๋ฅผ ์ƒ์„ฑํ•ด์„œ ๋ฆฌ์ŠคํŠธ์˜ ์š”์†Œ๋ฅผ ์ง€์ •๋œ ํ•จ์ˆ˜๋กœ ์ฒ˜๋ฆฌํ•ด ์ฃผ๋Š” ํ•จ์ˆ˜๋‹ค.

https://dojang.io/mod/page/view.php?id=2286

 

ํŒŒ์ด์ฌ ์ฝ”๋”ฉ ๋„์žฅ: 22.6 ๋ฆฌ์ŠคํŠธ์— map ์‚ฌ์šฉํ•˜๊ธฐ

์ด๋ฒˆ์—๋Š” ๋ฆฌ์ŠคํŠธ์— map์„ ์‚ฌ์šฉํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. map์€ ๋ฆฌ์ŠคํŠธ์˜ ์š”์†Œ๋ฅผ ์ง€์ •๋œ ํ•จ์ˆ˜๋กœ ์ฒ˜๋ฆฌํ•ด์ฃผ๋Š” ํ•จ์ˆ˜์ž…๋‹ˆ๋‹ค(map์€ ์›๋ณธ ๋ฆฌ์ŠคํŠธ๋ฅผ ๋ณ€๊ฒฝํ•˜์ง€ ์•Š๊ณ  ์ƒˆ ๋ฆฌ์ŠคํŠธ๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค). list(map(ํ•จ์ˆ˜, ๋ฆฌ์ŠคํŠธ)) tuple(map(ํ•จ์ˆ˜, ํŠœํ”Œ)) ์˜ˆ๋ฅผ ๋“ค์–ด ์‹ค์ˆ˜๊ฐ€ ์ €์žฅ๋œ ๋ฆฌ์ŠคํŠธ๊ฐ€ ์žˆ์„ ๋•Œ ์ด ๋ฆฌ์ŠคํŠธ์˜ ๋ชจ๋“  ์š”์†Œ๋ฅผ ์ •์ˆ˜๋กœ ๋ณ€ํ™˜ํ•˜๋ ค๋ฉด ์–ด๋–ป๊ฒŒ ํ•ด์•ผ ํ• ๊นŒ์š”? ๋จผ์ € for ๋ฐ˜๋ณต๋ฌธ์„ ์‚ฌ์šฉํ•ด์„œ ๋ณ€ํ™˜ํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. >>> a = [1.2, 2.5, 3.7, 4.6] >>> for

dojang.io

 

์ด์ œ ๋ฌธ์ œ๋ฅผ ํ’€์–ด๋ณผ ์‹œ๊ฐ„์ด๋‹ค.

์ € ๋„ค ๊ฐ€์ง€ ํ•จ์ˆ˜๋ฅผ ์ž˜ ์กฐํ•ฉํ•ด ๋ณด์ž.

 

๋จผ์ € foo ๋ฆฌ์ŠคํŠธ๋ฅผ ๋งŒ๋“ค์–ด์ค€๋‹ค.

foo = [1,38,23,9,5,2]

์กฐ๊ฑด์„ ์‚ดํŽด๋ณด๋ฉด ๋‘ ๊ฐ€์ง€๊ฐ€ ์žˆ๋‹ค.

1. 20๋ณด๋‹ค ํฐ ์ˆ˜๋งŒ ๋‚จ๊ธด๋‹ค.

2. 2๋ฅผ ๊ณฑํ•œ๋‹ค.

 

๋จผ์ € ์กฐ๊ฑด 1์„ ์‹คํ–‰ํ•ด๋ณด์ž.

filted_foo = filter(lambda x:(x>20)==1, foo)

filterํ•จ์ˆ˜๋ฅผ ์ด์šฉํ•ด์„œ foo์—์„œ ์›ํ•˜๋Š” ์กฐ๊ฑด์˜ ์ธ์ž๋งŒ ์ด์šฉํ•ด์„œ ์ƒˆ๋กญ๊ฒŒ filted_foo๋ฅผ ๋งŒ๋“ค์–ด ์ฃผ์—ˆ๋‹ค.

์กฐ๊ฑด์„ ๋„ฃ์„ ๋•Œ์—๋Š” lambda ํ•จ์ˆ˜๋ฅผ ์ด์šฉํ–ˆ๋‹ค. lambda์˜ ๊ฒฐ๊ด๊ฐ’์ด T๊ฐ€ ๋‚˜์˜ค๋Š” ์ธ์ž๋งŒ์„ ๋ชจ์•„์„œ ๋ฆฌ์ŠคํŠธ๋ฅผ ๋งŒ๋“ ๋‹ค.

 

bar = list(map(lambda x:x*2, filted_foo))

map์„ ์ด์šฉํ•ด์„œ ๋ฆฌ์ŠคํŠธ์˜ ์ธ์ž๋“ค์— 2๋ฅผ ๊ณฑํ•ด์ค€๋‹ค. 2๋ฅผ ๊ณฑํ•ด์ฃผ๋Š” ํ•จ์ˆ˜๋Š” lambda๋ฅผ ์ด์šฉํ•ด์„œ ๋งŒ๋“ค์—ˆ๋‹ค.

๋งˆ์ง€๋ง‰์œผ๋กœ list๋ฅผ ์ด์šฉํ•ด์„œ ์ธ์ž๋“ค์„ list๋กœ ๋ฌถ์–ด์ฃผ๋ฉด ๋œ๋‹ค.

 

print(bar)
[76, 46]

๊ฒฐ๊ณผ๊ฐ’์ด ์ž˜ ๋‚˜์˜ค๋Š” ๋ชจ์Šต์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.


์—ฌ๋Ÿฌ ํ•จ์ˆ˜๋ฅผ ์ž˜ ์„ž์–ด ์“ฐ๋Š” ๊ฒŒ ๋˜ ํŒŒ์ด์ฌ์˜ ๋ฌ˜๋ฏธ์ธ ๊ฑฐ ๊ฐ™๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ๊ณ„์† ์–ด๋–ค ํ•จ์ˆ˜๊ฐ€ ๋ฌด์Šจ ๊ธฐ๋Šฅ์ด ์žˆ๊ณ , ์ด๋Ÿฐ ๋ฐฉ์‹์„ ์—ฐ์Šตํ•˜์ง€ ์•Š์œผ๋ฉด ๋ฐ”๋กœ๋ฐ”๋กœ ๋– ์˜ค๋ฅด์ง€ ์•Š์„ ๋งŒํ•œ ์•„์ด๋””์–ด๋‹ค. ์—ฐ์Šตํ•ด์•ผ๊ฒ ๋‹ค......