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Àº ¡®Âü¡¯À̴ϱî Åë°úÇÏÁö¿ä.

¡¦

ÀÌ·± ½ÄÀ¸·Î ¼öÇàÇϸ鼭 Ȧ¼ö¸¸ µ¹·ÁÁÖ°Ô µÇ´Â °ÅÁö¿ä.

 

ÈÞ~. À̹ø °­Á´ ¼³¸íÇϱâ Èûµé¾î¼­ ¾²¸é¼­ ÇÑÂü ¾Ö¸Ô¾ú³×¿ä.

Àß ÀÌÇØµÇÁö ¾Ê´Â ºÎºÐÀÌ ÀÖÀ¸¸é Áú¹®´äº¯ °Ô½ÃÆÇ¿¡ ¿Ã·ÁÁÖ¼¼¿ä.

±×·³ ¾È³ç~.