3.5. ¶÷´Ù Çü½Ä
(¾´ ³¯ : 2001-05-31)
¾È³çÇϼ¼¿ä~.
¹ú½á 5¿ùÀÇ
¸¶Áö¸· ³¯ÀÌ µÇ¾ú±º¿ä. ÀÌ °Á¸¦ ½ÃÀÛÇÑÁöµµ ÇÑ´ÞÀÌ Áö³µ½À´Ï´Ù.
ASP¶ó´Â ¾ð¾î¸¦ °øºÎÇØº¸½Å
ºÐÀº ÇѹøÂë ÅÂ¿ä »çÀÌÆ®¿¡ ´ëÇØ µé¾îº¸¼ÌÀ» ÅÙµ¥¿ä.
Àúµµ ¾îÁ¦ °Å±â µé·¶´Ù°¡ ±× ºÐó·³ °Á¸¦
ÅëÇØ ¸¹Àº »ç¶÷µé¿¡°Ô µµ¿òÀ» ÁÖ°í ½Í´Ù´Â »ý°¢À» Çß´ä´Ï´Ù.
¿À´ÃÀº ¶÷´Ù Çü½Ä°ú ±×°ÍÀ» ÀÌ¿ëÇÏ´Â ¿©·¯°¡Áö
ÇÔ¼öµé¿¡ ´ëÇØ¼ ¾Ë¾Æº¸°Ú½À´Ï´Ù.
´çÀå ¿Ïº®ÇÏ°Ô ¼ÒÈÇÏ½Ç ÇÊ¿ä´Â ¾øÀ» °Í
°°±¸¿ä, °¡º¿î ¸¶À½À¸·Î ÀÌ·± °ÍÀÌ ÀÖ´Ù´Â Á¤µµ¸¸ ¾Æ¼Åµµ µÇÁö ¾ÊÀ»±î ÇÕ´Ï´Ù.
¶÷´Ù Çü½ÄÀº ÀΰøÁö´É ºÐ¾ß³ª AutoCAD¶ó´Â ¼³°è ÇÁ·Î±×·¥¿¡¼ ¾²ÀÌ´Â Lisp ¾ð¾î¿¡¼ ¹°·Á¹Þ¾Ò´Ù°í Çϴµ¥¿ä, ÇÔ¼ö¸¦ µü ÇÑ ÁÙ¸¸À¸·Î ¸¸µé°Ô ÇØÁÖ´Â
±â¶ËÂù ¹æ¹ýÀÔ´Ï´Ù.
»ç¿ëÇÒ ¶§´Â ¾Æ·¡¿Í °°ÀÌ ½áÁÖ¸é µÇÁö¿ä.
|
lambda ÀÎÀÚ : Ç¥Çö½Ä |
´ÙÀ½Àº µÎ ¼ö¸¦ ´õÇÏ´Â ÇÔ¼öÀÔ´Ï´Ù.
|
>>>
def hap(x, y): ... return x + y ... >>>
hap(10,20) 30 |
À̰ÍÀ» ¶÷´Ù Çü½ÄÀ¸·Î´Â ¾î¶»°Ô Ç¥ÇöÇÒ±î¿ä?
|
>>>
(lambda x,y: x+y)(10, 20) 30 |
³Ê¹«³ª °£´ÜÇÏÁÒ? ÇÔ¼ö°¡ À̸§Á¶Â÷µµ ¾ø½À´Ï´Ù.
¡°±×³É 10 +
20À̶ó°í ÇÏ¸é µÅÁö¡±¶ó°í ¸»¾¸ÇÏ½Ã¸é ¹Ì¿öÀ×~.
¸î °¡Áö ÇÔ¼ö¸¦ ´õ ¹è¿öº¸¸é¼ ¶÷´Ù°¡ ¾î¶»°Ô
ÀÌ¿ëµÇ´ÂÁö ¾Ë¾Æº¸µµ·Ï ÇÏÁÒ.
¸ÕÀú
map ÇÔ¼ö¸¦ º¼±î¿ä?
|
map(ÇÔ¼ö, ¸®½ºÆ®) |
ÀÌ ÇÔ¼ö´Â ÇÔ¼ö¿Í ¸®½ºÆ®¸¦ ÀÎÀÚ·Î ¹Þ½À´Ï´Ù. ±×·¸ÁÒ?
±×¸®°í,
¸®½ºÆ®·ÎºÎÅÍ ¿ø¼Ò¸¦ Çϳª¾¿ ²¨³»¼ ÇÔ¼ö¸¦ Àû¿ë½ÃŲ ´ÙÀ½, ±× °á°ú¸¦ »õ·Î¿î ¸®½ºÆ®¿¡ ´ã¾ÆÁØ´ä´Ï´Ù. ¸»ÀÌ Á» º¹ÀâÇÏÁÒ?
±×·² ¶§ ¿¹Á¦¸¦ º¸´Â °Ô ÃÖ°íÁÒ.
|
>>>
map(lambda x: x**2, range(5)) [0, 1, 4, 9,
16] |
ˤ˂ map
ÇÔ¼ö°¡ ÀÎÀÚ·Î ¹ÞÀº ÇÔ¼ö´Â lambda x: x**2±¸¿ä, ¸®½ºÆ®·Î´Â range(5)¸¦ ¹Þ¾Ò½À´Ï´Ù.
range ÇÔ¼ö´Â ¾Ë°í°è½ÃÁÒ?
range(5) ¶ó°í
½áÁÖ¸é [0, 1, 2, 3, 4]¶ó´Â ¸®½ºÆ®¸¦ µ¹·ÁÁÝ´Ï´Ù.
±×¸®°í
x**2 ¶ó´Â °ÍÀº x °ªÀ» Á¦°öÇ϶ó´Â ¿¬»êÀÚÁÒ.
map ÇÔ¼ö´Â ¸®½ºÆ®¿¡¼
¿ø¼Ò¸¦ Çϳª¾¿ ²¨³»¼ ÇÔ¼ö¸¦ Àû¿ë½ÃŲ °á°ú¸¦ »õ·Î¿î ¸®½ºÆ®¿¡ ´ã¾ÆÁִϱî, À§ÀÇ ¿¹Á¦´Â 0À» Á¦°öÇϰí, 1À» Á¦°öÇϰí, 2, 3, 4¸¦ Á¦°öÇÑ °ÍÀ»
»õ·Î¿î ¸®½ºÆ®¿¡ ³Ö¾îÁÖ´Â °ÍÀÔ´Ï´Ù.
À̹ø¿£
reduce ÇÔ¼ö¸¦ »ìÆìº¾½Ã´Ù.
|
reduce(ÇÔ¼ö, ¼ø¼Çü ÀÚ·á) |
Çü½ÄÀº À§¿Í °°±¸¿ä, ¼ø¼Çü ÀÚ·á(¹®ÀÚ¿, ¸®½ºÆ®, Æ©ÇÃ)ÀÇ ¿ø¼ÒµéÀ» ´©ÀûÀûÀ¸·Î(?) ÇÔ¼ö¿¡ Àû¿ë½ÃŲ´ä´Ï´Ù. ¸»ÀÌ ÁøÂ¥ ¾î·Æ±º¿ä.
À̰͵µ ¿¹Á¦³ª º¾½Ã´Ù.
|
>>>
reduce(lambda x,y: x+y, [0,1,2,3,4]) 10 |
À§ÀÇ ¿¹Á¦´Â ¸ÕÀú 0°ú 1À» ´õÇϰí, ±× °á°ú¿¡ 2¸¦ ´õÇϰí, °Å±â´Ù°¡ 3À» ´õÇϰí, ¶Ç 4¸¦ ´õÇÑ °ªÀ» µ¹·ÁÁÝ´Ï´Ù.
ÇÑ ¸¶µð·Î ÀüºÎ ´Ù ´õÇ϶ó´Â °Ì´Ï´Ù.
»ý°¢º¸´Ù ½±ÁÒ?
ÇÏ¡¦ ÇÏ¡¦
ÇÏ¡¦
ÀDZâ¾ç¾çÇÏ°Ô ¡®¿¹¡¯¶ó°í ´ë´äÇϽŠºÐµéÀ» À§ÇØ Â¥Áõ³ª´Â ¿¹Á¦¸¦ ±ÇÇØµå¸®ÁÒ~.
|
>>>
reduce(lambda x,y: y+x, 'abcde') 'edcba' |
Àü ¿ø·¡ ¹¹ Çϳª¸¦ ¹è¿ì¸é ²À ¿±±âÀûÀÎ
½ÇÇèÀ» ÇØº»´ä´Ï´Ù.
´õ Â¥Áõ³ª¶ó°í ¼³¸í ¾È ÇØµå¸±¶ø´Ï´Ù~
±× ´ÙÀ½Àº filter¸¦ »ìÆìº¼ Â÷·ÊÀÔ´Ï´Ù.
ÇÊÅͰ¡ ¹¹ÁÒ?
Á¤¼ö±â¿¡¼ ¹°À» °É·¯ÁÖ´Â °ÍÀÌ ÇÊÅÍÁÒ?
¿¡¾îÄÁÀÇ ¹Ù¶÷ µé¾î°¡´Â °÷¿¡µµ ÇÊÅͰ¡ ´Þ·ÁÀÖ±¸¿ä.
|
filter(ÇÔ¼ö,
¸®½ºÆ®) |
ÆÄÀ̽ãÀÇ ÇÊÅÍ´Â ÀÌ·¸°Ô »ý°å´Âµ¥¿ä, ¸®½ºÆ®¿¡ µé¾îÀÖ´Â ¿ø¼ÒµéÀ» ÇÔ¼ö¿¡ Àû¿ë½ÃÄѼ °á°ú°¡ ÂüÀÎ °ªµé·Î »õ·Î¿î ¸®½ºÆ®¸¦ ¸¸µé¾îÁÝ´Ï´Ù.
´ÙÀ½Àº
0ºÎÅÍ 9±îÁöÀÇ ¸®½ºÆ® Áß¿¡¼ 5º¸´Ù ÀÛÀº °Í¸¸ µ¹·ÁÁÖ´Â ¿¹Á¦ÀÔ´Ï´Ù.
|
>>>
filter(lambda x: x<5, range(10)) [0, 1, 2, 3,
4] |
lambda x:
x<5 ¶ó°í ¾²´Ï±î ¿ØÁö ¼öÇÐÃ¥¿¡¼ º» µíÇÑ ´À³¦ÀÌ µéÁö ¾Ê½À´Ï±î?
¼öÇÐÀÚµéÀÌ ÆÄÀ̽ãÀ» ÁÁ¾ÆÇÑ´Ù´øµ¥¡¦
À§ÀÇ ¿¹Á¦°¡ ¾î¶»°Ô µ¹¾Æ°¡´ÂÁö´Â ô º¸¸é
¾Æ½Ã°ÚÁÒ?
0ºÎÅÍ 9±îÁöÀÇ ¸®½ºÆ®¿¡¼
¼ýÀÚ¸¦ Çϳª¾¿ ²¨³À´Ï´Ù.
±× ¼ýÀÚ¸¦ x¶ó Çϰí, x < 5 °¡ ¡®Âü¡¯ÀÌ¸é »ì·ÁÁÝ´Ï´Ù.
»ì¾Æ³²Àº °ÍµéÀº »õ·Î¿î ¸®½ºÆ®¿¡ ³Ö¾îÁÝ´Ï´Ù. ³¡.
ÀÚ, À̹ø¿£
Ȧ¼ö¸¸ µ¹·ÁÁÖ´Â filter¸¦ ¸¸µé¾î º¸µµ·Ï ÇսôÙ.
¸ÕÀú Ȧ¼ö°¡ ¹ºÁö »ý°¢Çغ¼±î¿ä?
¦¼ö´Â 2·Î
³ª´©¾î ¶³¾îÁö´Â ¼öÀ̰í, Ȧ¼ö´Â 2·Î ³ª´©¾î ¶³¾îÁöÁö ¾Ê´Â ¼öÀÔ´Ï´Ù.
¦¼ö¸¦ 2·Î
³ª´« ³ª¸ÓÁö´Â 0À̰í, Ȧ¼ö¸¦ 2·Î ³ª´©¸é ³ª¸ÓÁö°¡ 1ÀÌÁÒ.
¶Ç, ³ª¸ÓÁö¸¦
±¸ÇÒ ¶© %¶ó´Â ¿¬»êÀÚ¸¦ ¾²¸é µË´Ï´Ù.
¿¹¸¦ µé¾î¼, 50À» 8·Î ³ª´©¸é ¸òÀº 6ÀÌ°í ³ª¸ÓÁö´Â 2´Ï±î 50%8Àº 2°¡ µÇ´Â °ÅÁö¿ä.
ÀÌÁ¦ Ȧ¼ö¸¦ µ¹·ÁÁÖ´Â ÇÊÅ͸¦ ¸¸µé¾î º¸°Ú½À´Ï´Ù.
|
>>>
filter(lambda x: x%2, range(10)) [1, 3, 5, 7,
9] |
Áö³ ½Ã°£¿¡ ¡®Âü¡¯Àº 1ÀÌ°í ¡®°ÅÁþ¡¯Àº 0À̶ó°í ÇßÁÒ?
ˤ˂ filter
ÇÔ¼ö¸¦ ½ÇÇà½Ã۸é,
0À» 2·Î ³ª´« ³ª¸ÓÁö´Â
0ÀÌ´Ï±î ¶÷´Ù ÇÔ¼öÀÇ °á°ú°ªÀº 0À̰í, 0Àº ¡®°ÅÁþ¡¯ÀÌ´Ï±î ¹ö·ÁÁý´Ï´Ù.
1À» 2·Î ³ª´« ³ª¸ÓÁö´Â
1ÀÌ´Ï±î ¶÷´Ù ÇÔ¼öÀÇ °á°ú°ªÀº 1À̰í, 1Àº ¡®Âü¡¯À̴ϱî Åë°úÇÏÁö¿ä.
¡¦
ÀÌ·± ½ÄÀ¸·Î ¼öÇàÇÏ¸é¼ È¦¼ö¸¸ µ¹·ÁÁÖ°Ô
µÇ´Â °ÅÁö¿ä.
ÈÞ~. À̹ø
°Á´ ¼³¸íÇϱâ Èûµé¾î¼ ¾²¸é¼ ÇÑÂü ¾Ö¸Ô¾ú³×¿ä.
Àß ÀÌÇØµÇÁö ¾Ê´Â ºÎºÐÀÌ ÀÖÀ¸¸é Áú¹®´äº¯
°Ô½ÃÆÇ¿¡ ¿Ã·ÁÁÖ¼¼¿ä.
±×·³ ¾È³ç~.