ÀÌ ±ÛÀº http://cafepy.com/article/59/·Î À̻縦 °¬À¸¸ç °Å±â¿¡ °¡¸é ³íÆòµµ °Ô½ÃÇÒ ¼ö ÀÖ´Ù.
ÇÑ ¾ð¾î¿¡¼ ´Ù¸¥ ¾ð¾î·Î ÀÌÁÖÇϸé, ¹è¿î °ÍµéÁß¿¡ ¾î¶² °ÍµéÀº ÀØÀ» Çʿ䰡 ÀÖ´Ù (¹è¿òÀÇ ÀÌÀü ÂüÁ¶).
ÀÌ ±Û¿¡¼´Â ƯÈ÷ ³»°¡ ÁÁ¾ÆÇÏ´Â ÆÄÀ̽㿡¼ »ç¿ëµÇ´Â °ü¿ë±¸µéÀ» ´ã¾Ò´Ù. ÆÄÀ̽ã´Ù¿òÀ» Ãß±¸ÇÏ´Â ´Ù¸¥ »ç¶÷µé¿¡°Ôµµ ¾µ¸ð°¡ Àֱ⸦ ¹Ù¶õ´Ù.
1. °è¼ö±â´Â °ÅÀÇ »ç¿ëÇÒ Çʿ䰡 ¾øÀ¸¸ç, °¡²û¾¿ ¹Ýº¹ÀÚ¸¦ »ç¿ëÇÒ Çʿ䰡 ÀÖÀ» »ÓÀÌ´Ù
À߸ø:
i = 0
while i<10:
do_something(i)
i += 1
ÆÄÀ̽ã´Ù¿ò:
for i in xrange(10):
do_something(i)
À߸ø:
i = 0
while i<len(L):
do_something(L[i])
i += 1
ÆÄÀ̽ã´Ù¿ò:
for item in L:
do_something(item)
¹Ýº¹ÀÚ º¯¼ö´Â ȸµ¹ÀÌ »óŸ¦ µÎ°³ÀÇ '½ÇÇà' »óÅ »çÀÌ¿¡ À¯ÁöÇÏ°í ½ÍÀ» ¶§ À¯¿ëÇÏ´Ù:
itrL = iter(L)
for item in itrL:
do_something(item)
if is_some_condition(item):
break
for item in itrL: # ¾ÕÀÇ È¸µ¹À̰¡ ³¡³µ´ø °÷¿¡¼ºÎÅÍ °è¼Ó ½ÇÇàµÈ´Ù
do_something_else(item)
2. for ȸµ¹ÀÌ´Â Çʿ䰡 ¾øÀ» ¼öµµ ÀÖ´Ù
ÆÄÀ̽ãÀº ¿¬¼Ó¿ 󸮿¡ ³ôÀº ¼öÁØÀÇ ÆíÀÇÇÔ¼öµéÀ» ¸¹ÀÌ Á¦°øÇÑ´Ù. ¿¹¸¦ µé¾î zip(), max(), min(), ¸®½ºÆ® ÅëÇÕ µîµîÀÌ ÀÖ´Ù. µ¥ÀÌÅ͸¦ ÅÍÇðú ¸®½ºÆ® ±×¸®°í »çÀü ¾È¿¡ º¸°üÇϰí, ÆÄÀ̽ã´ä°Ô ´À±ßÇÑ ±âºÐÀ¸·Î Àü Áý´ÜÀ» ó¸®ÇÏÀÚ. ¿¹¸¦ µé¾î, ´ÙÀ½ ÄÚµå´Â CSV ÆÄÀÏÀ» ÀÐ¾î¼ (ù ÁÙÀ» Çʵå À̸§À¸·Î ÇÏ¿©), °¢ ÁÙÀ» »çÀü recordÀ¸·Î º¯È¯Çϰí, ±× Çհ踦 °è»êÇÏ¿© 'quantity'Ä÷³¿¡ ÀúÀåÇÑ´Ù:
lines = open('filename.csv').readlines()
field_names = lines[0].split(',')
records = [dict(zip(field_names, line.split(','))) for line in lines[1:]]
print sum([int(record['quantity']) for record in records])
¾à°£ À¯Ä¡ÇÏÁö¸¸ (¾î·µç csv ¸ðµâÀ» »ç¿ëÇß¾î¾ß Çϰí, ±× ¸ðµâÀº ÆÄÀ̽ã Ç¥ÁØ ¶óÀ̺귯¸®¿¡ ÀÖ´Ù), ÀÌ ¿¹Á¦´Â ¸î°¡Áö À¯¿ëÇÑ Æ¯Â¡µéÀ» º¸¿©ÁØ´Ù. zip()À» dict()¿¡ »ç¿ëÇϸé Çʵå À̸§À¸·Î ±¸¼ºµÈ ÇÑ ÅÍÇÃÀ» °ªµé·Î ±¸¼ºµÈ ÇÑ ÅÍÇÿ¡ Á¶ÇÕÇØ¼ »çÀüÀ» ¸¸µé ¼ö ÀÖ´Ù - ¸®½ºÆ® ÅëÇÕµµ µ¿¿øÇÏ¸é ´Ü Çѹ濡 Àüü ¸®½ºÆ®¿¡ ´ëÇÏ¿© ÀÌ·¸°Ô ÇÒ ¼ö ÀÖ´Ù.
3. ÅÍÇÃÀº Àбâ-Àü¿ë ¸®½ºÆ®°¡ ¾Æ´Ï´Ù
ÅÍÇÃÀº º¸Åë ÀÌÁúÀûÀÎ Áý´ÜÀ» ³ªÅ¸³½´Ù. ¿¹¸¦ µé¾î (first_name, last_name) ¶Ç´Â (ip_address, port)¿Í °°ÀÌ ¸»ÀÌ´Ù. (first_name°ú last_name´Â µÑ ´Ù ¹®ÀÚ¿À̵íÀÌ), À¯Çü(type)Àº °°À» ¼ö ÀÖÁö¸¸ ½ÇÁ¦ ¼¼°èÀÇ Àǹ̴ º¸Åë ´Ù¸£´Ù. °¡²û¾¿ ³ª´Â ÅÍÇÃÀ» °ü°èÇü µ¥ÀÌÅͺ£À̽º¿¡¼ÀÇ ÇÑ ÇàÀ¸·Î »ý°¢Çϱ⸦ ÁÁ¾ÆÇÑ´Ù - ½ÇÁ¦·Î °ü°èÇü µ¥ÀÌÅͺ£À̽º¿¡¼ ÇÑ Ç൵ °ü°èÇü ¸ðµ¨ÀÇ °ø½ÄÀû ±â¼ú¿¡ ÀÇÇÏ¸é ¿ª½Ã ÅÍÇÃÀ̶ó°í ºÒ¸®¿î´Ù! ¹Ý¸é¿¡, À̸§ ¸®½ºÆ®´Â ¾ðÁ¦³ª ¸®½ºÆ®ÀÌ´Ù. ºñ·Ï ƯÁ¤ ÇÔ¼ö°¡ ±× ¸®½ºÆ®¸¦ ¼öÁ¤ÇÏÁö ¾ÊÀ»Áö¶óµµ, ±×·¸´Ù°í ÇÏ´õ¶óµµ ÅÍÇÃÀÌ µÇÁö´Â ¾Ê´Â´Ù.
ÅÍÇà Ǯ±â´Â °ªÀ» ÅÍÇ÷κÎÅÍ ÃßÃâÇÏ´Â À¯¿ëÇÑ Å×Å©´ÐÀÌ´Ù. ¿¹¸¦ µé¾î:
for (ip_address, port) in all_connections:
if port<2000:
print 'Connected to %s on %s' % (ip_address, port)
´ÙÀ½ Äڵ带 ÀÐ¾î º¸¸é all_connectionsÀº ¸®½ºÆ®·Î¼ (Áï ¹Ýº¹°¡´ÉÇÔ) (ip_address, port)ÀÇ ÇüÅ·ΠÅÍÇÃÀÌ ´ã±â¾î ÀÖ´Ù. for item in all_connectionsÀ» »ç¿ëÇϰí item[0]ÀÇ ÇüÅ·Π¾È¿¡¼ Ç׸ñ(item)À» ²¨³»´Â ·ùÀÇ Å×Å©´Ð¿¡ ºñÇØ À̰ÍÀÌ ÈξÀ ´õ ¸í·áÇÏ´Ù.
ÅÍÇÃÇ®±â´Â ¶ÇÇÑ ÇÑ ÇÔ¼ö¿¡¼ ¿©·¯ °ªµéÀ» µ¹·ÁÁÙ ¶§µµ À¯¿ëÇÏ´Ù:
name, ext = os.path.splitext(filename) # ÆÄÀÏ À̸§À» ù ºÎºÐ°ú È®Àå ºÎºÐÀ¸·Î °¡¸¥´Ù
4. Ŭ·¡½º´Â À¯Æ¿¸®Æ¼ ÇÔ¼ö¸¦ ¸ð¾ÆµÎ´Â °÷ÀÌ ¾Æ´Ï´Ù
C#¿Í Java´Â Äڵ带 Ŭ·¡½º ¾È¿¡¸¸ µÑ ¼ö ÀÖÀ¸¸ç, ¸¹Àº À¯Æ¿¸®Æ¼ Ŭ·¡½ºµéÀº °á±¹ Á¤Àû ¸Þ½îµå¸¸ ´ã±â°Ô µÈ´Ù. ÀϹÝÀûÀÎ ¿¹´Â sin() °°Àº ¼öÇÐ ÇÔ¼öÀÌ´Ù. ÆÄÀ̽㿡¼´Â ±×³É ¸ðµâÀ» ÃÖ»óÀ§ ÇÔ¼ö·Î »ç¿ëÇÏ¸é µÈ´Ù.
5. ¼³Á¤ÀÚ¿Í È¹µæÀÚ¸¦ °ÅºÎÇÏÀÚ
¹°·Ð, ĸ½¶È(encapsulation)´Â Áß¿äÇÏ´Ù. ±×·¯³ª ȹµæÀÚ(getters)¿Í ¼³Á¤ÀÚ(setters) ¸¸ÀÌ Ä¸½¶È¸¦ ±¸ÇöÇÏ´Â À¯ÀÏÇÑ ¹æ¹ýÀº ¾Æ´Ï´Ù. (GetterEradicatorµµ ÂüÁ¶). ÆÄÀ̽㿡¼´Â Ư¼ºÀ» »ç¿ëÇÒ ¼ö ÀÖ°í ¸â¹ö º¯¼ö¸¦ ±³Ã¼ÇÒ ¼ö ÀÖÀ¸¸ç È£Ãâ Äڵ带 ¼öÁ¤ÇÏÁö ¾Ê°í¼µµ ±¸Çö ¸ÞÄ¿´ÏÁòÀ» ¿ÏÀüÈ÷ ¹Ù²Ü ¼ö ÀÖ´Ù.
³ëÃâ ½ÃŲ °ÍÀÌ Áß¿äÇÏ´Ù. (¸Þ½îµå È£ÃâÀ» ÅëÇÒ °ÍÀÎÁö Á÷Á¢ Á¢±ÙÇÒ °ÍÀÎÁö) ³ëÃâ ½ÃŰ´Â ¹æ¹ýÀÌ Áß¿äÇÑ °ÍÀÌ ¾Æ´Ï´Ù.
6. ÇÔ¼ö´Â °´Ã¼ÀÌ´Ù
ÇÔ¼ö´Â È£Ãâ°¡´É °´Ã¼ÀÌ´Ù. ÀÌ´Â ¾Æ·¡ ¿¹Á¦¿¡¼ º¸µíÀÌ ¸¹Àº »óȲ¿¡¼ ¾ÆÁÖ Æí¸®ÇÑ Æ¯Â¡ÀÌ´Ù. ´ÙÀ½ ¿¹Á¦´Â »çÀüÀÇ 'price' Ű °ª¿¡ ±Ù°ÅÇÏ¿© »çÀüÀ¸·Î ±¸¼ºµÈ ¸®½ºÆ®¸¦ Á¤·ÄÇÑ´Ù:
# a¿Í bÀÇ ºñ±³¸¦ a['price']¿Í b['price']ÀÇ ºñ±³·Î Á¤ÀÇÇÑ´Ù
def cmp_price(a, b):
return cmp(a['price'], b['price'])
L.sort(cmp_price) # ÃÖ±Ù¿¡ Á¤ÀÇµÈ ºñ±³ ÇÔ¼ö·Î ¸®½ºÆ®¸¦ Á¤·ÄÇÑ´Ù
Related Links
ÀÌ ±ÛÀÌ ¸¶À½¿¡ µç´Ù¸é, CafePy ±Ûµéµµ Àϵ¶À» ±ÇÇÑ´Ù