next up previous contents
Next: ¹®ÀÚ¿­ÀÇ º¹¼ö Up: ÀϹÝÀÎÀ» À§ÇÑ ÆÄÀ̽ã Áöħ¼­ Previous: ¸ðµâ »ç¿ëÇÏ±â   ¸ñ Â÷

¸®½ºÆ®¿¡ ´ëÇÏ¿© ´õ ÀÚ¼¼È÷

¿ì¸®´Â ÀÌ¹Ì ¸®½ºÆ®°¡ ¾î¶»°Ô »ç¿ëµÉ ¼ö ÀÖ´ÂÁö »ìÆ캻 ¹Ù ÀÖ´Ù. ÀÌÁ¦ ¿©·¯ºÐÀº Á»´õ ¹è°æÁö½ÄÀ» °°°Ô µÇ¾úÀ¸¹Ç·Î ³ª´Â ¸®½ºÆ®¿¡ ´ëÇÏ¿© Á» ´õ ÀÚ¼¼ÇÏ°Ô µé¾î°¡ º¸·Á°í ÇÑ´Ù. ¸ÕÀú ¸®½ºÆ®¿¡¼­ ¿ä¼Ò¸¦ ȹµæÇÏ´Â ´õ ¸¹Àº ¹æ¹ýÀ» »ìÆ캼 °ÍÀÌ´Ù. ±×¸®°í ¿ì¸®´Â ±×°ÍµéÀ» º¹»çÇÏ´Â °Í¿¡ ´ëÇÏ¿© ³íÀÇÇÒ °ÍÀÌ´Ù.

¿©±â¿¡ ÁöÇ¥¸¦ »ç¿ëÇÏ¿© ¸®½ºÆ®ÀÇ ±¸¼º¿ä¼Ò¿¡ Á¢±ÙÇÏ´Â ¾à°£ÀÇ ¿¹Á¦°¡ ÀÖ´Ù:

>>> list = ['zero','one','two','three','four','five']
>>> list[0]
'zero'
>>> list[4]
'four'
>>> list[5]
'five'
ÀÌ·¯ÇÑ ¸ðµç ¿¹Á¦µéÀº ¿©·¯ºÐ¿¡°Ô ¸Å¿ì Ä£¼÷ÇÏ°Ô º¸¿©¾ß¸¸ ÇÑ´Ù. ¿©·¯ºÐÀÌ ¸®½ºÆ®¿¡¼­ ù ¹ø° Ç׸ñÀ» ¿øÇÑ´Ù¸é ´ÜÁö ÁöÇ¥ 0À» »ìÆ캸¶ó. µÎ ¹ø° Ç׸ñÀº ÁöÇ¥ 1 ÀÌ°í ±×·±½ÄÀ¸·Î ¸®½ºÆ®ÀÇ ¸¶Áö¸·±îÁö °£´Ù. ±×·¸Áö¸¸ ¿©·¯ºÐÀÌ ¸®½ºÆ®ÀÇ ¸¶Áö¸· Ç׸ñÀ» ¿øÇÑ´Ù¸é ¾î¶»°Ô ÇÒ±î? ÇϳªÀÇ ¹æ¹ýÀº 'list[len(list)-1]'¿Í °°ÀÌ len ÇÔ¼ö¸¦ »ç¿ëÇÏ´Â °ÍÀÌ´Ù. lenÇÔ¼ö°¡ Ç×»ó ¸¶Áö¸· ÁöÇ¥ ´õÇϱâ 1 °ªÀ» ¹ÝȯÇØ ÁֹǷΠÀÌ°ÍÀº Àß ÀÛµ¿ÇÑ´Ù. ¸¶Áö¸·À¸·ÎºÎÅÍ µÎ ¹ø°´Â ±×·¯¸é list[len(list)-2] ÀÌ µÉ °ÍÀÌ´Ù. ÀÌ°ÍÀ» À§ÇÑ ´õ ½¬¿î ¹æ¹ýÀÌ ÀÖ´Ù. ÆÄÀ̽㿡¼­ °¡Àå ¸¶Áö¸· Ç׸ñÀº Ç×»ó 'index-1' ÀÌ´Ù. ¸¶Áö¸·¿¡¼­ µÎ¹ø°´Â 'index -2' ÀÌ´Ù. µîµî. ¿©±â¿¡ ¿¹Á¦¸¦ ´õ º¸Àδٸé:
>>> list[len(list)-1]
'five'
>>> list[len(list)-2]
'four'
>>> list[-1]
'five'
>>> list[-2]
'four'
>>> list[-6]
'zero'
ÀÌ·¸°Ô ¸®½ºÆ®ÀÇ ¾î¶² Ç׸ñµµ µÎ °¡Áö ¹æ¹ýÀ¸·Î Áöǥȭ µÉ ¼ö ÀÖ´Ù : ¾ÕÀ¸·Î ºÎÅÍ ±×¸®°í µÚ·Î ºÎÅÍ

¸®½ºÆ®ÀÇ ºÎºÐÀ¸·Î µé¾î°¡´Â ¶Ç ´Ù¸¥ À¯¿ëÇÑ ¹æ¹ýÀº ½ä±âÀÌ´Ù. ¿©±â¿¡ ¿©·¯ºÐ¿¡°Ô ½ä±â°¡ ¹«¾ù¿¡ À¯¿ëÇÑÁö ¾ÆÀ̵ð¾î¸¦ Á¦°øÇÏ´Â ¶Ç ´Ù¸¥ ¿¹Á¦°¡ ÀÖ´Ù.:

>>> list = [0,'Fred',2,'S.P.A.M.','Stocking',42,"Jack","Jill"]
>>> list[0]
0
>>> list[7]
'Jill'
>>> list[0:8]
[0, 'Fred', 2, 'S.P.A.M.', 'Stocking', 42, 'Jack', 'Jill']
>>> list[2:4]
[2, 'S.P.A.M.']
>>> list[4:7]
['Stocking', 42, 'Jack']
>>> list[1:5]
['Fred', 2, 'S.P.A.M.', 'Stocking']
½ä±â´Â ¸®½ºÆ®ÀÇ ºÎºÐÀ» ¹ÝȯÇϴµ¥ »ç¿ëµÈ´Ù. ½ä±â ¿¬»êÀÚ´Â list[first_index:following_index]ÀÇ ÇüÅ·Π»ç¿ëµÈ´Ù. ½ä±â´Â first_index·ÎºÎÅÍ following_index¾ÕÀÇ ÁöÇ¥±îÁö ½ÇÇàµÈ´Ù. ¿©·¯ºÐÀº Áöǥȭ ÇüÅ µÎ °¡Áö ¸ðµÎ¸¦ »ç¿ëÇÒ ¼ö ÀÖ´Ù:
>>> list[-4:-2]
['Stocking', 42]
>>> list[-4]
'Stocking'
>>> list[-4:6]
['Stocking', 42]
½ä±â¿¡ ´ëÇÑ ¶Ç ´Ù¸¥ ²Ä¼ö´Â ÁöÇ¥¸¦ »ý·«ÇÏ´Â °ÍÀÌ´Ù. ¸¸¾à ù ¹ø° ÁöÇ¥°¡ »ý·«µÇ¸é ¸®½ºÆ®ÀÇ Ã³À½À̶ó°í °¡Á¤µÈ´Ù. ¸¸¾à ´ÙÀ½ÀÇ ÁöÇ¥°¡ »ý·«µÇ¸é ±× ¸®½ºÆ®ÀÇ ³ª¸ÓÁö Àüü¶ó°í °¡Á¤µÈ´Ù. ¿©±â¿¡ ¾à°£ÀÇ ¿¹Á¦°¡ ÀÖ´Ù:
>>> list[:2]
[0, 'Fred']
>>> list[-2:]
['Jack', 'Jill']
>>> list[:3]
[0, 'Fred', 2]
>>> list[:-5]
[0, 'Fred', 2]
¿©±â¿¡ ÇϳªÀÇ ÇÁ·Î±×·¥ ¿¹Á¦°¡ ÀÖ´Ù. (¿©·¯ºÐÀÌ ¿øÇÑ´Ù¸é ½Ã¸¦ Á¤ÀÇÇÏ´Â ÇüÅ·Πº¹»çÇÏ°í ºÙ¿©³Ö¾î¶ó):
poem = ["<B>","Jack","and","Jill","</B>","went","up","the","hill","to","<B>",\
"fetch","a","pail","of","</B>","water.","Jack","fell","<B>","down","and",\
"broke","</B>","his","crown","and","<B>","Jill","came","</B>","tumbling",\
"after"]

def get_bolds(list):
        true = 1
        false = 0
        ## is_bold tells whether or not the we are currently looking at
        ## a bold section of text.
        is_bold = false
        ## start_block is the index of the start of either an unbolded
        ## segment of text or a bolded segment.
        start_block = 0
        for index in range(len(list)):
                ##Handle a starting of bold text
                if list[index] == "<B>":
                        if is_bold:
                                print "Error:  Extra Bold"
                        ##print "Not Bold:",list[start_block:index]
                        is_bold = true
                        start_block = index+1
                ##Handle end of bold text
                if list[index] == "</B>":
                        if not is_bold:
                                print "Error: Extra Close Bold"
                        print "Bold [",start_block,":",index,"] ",\
                        list[start_block:index]
                        is_bold = false
                        start_block = index+1

get_bolds(poem)
Ãâ·ÂÀ» º¸Àδٸé:
Bold [ 1 : 4 ]  ['Jack', 'and', 'Jill']
Bold [ 11 : 15 ]  ['fetch', 'a', 'pail', 'of']
Bold [ 20 : 23 ]  ['down', 'and', 'broke']
Bold [ 28 : 30 ]  ['Jill', 'came']

get_boldÇÔ¼ö´Â ÇϳªÀÇ ¸®½ºÆ®¸¦ ºÒ·¯µé¿© ´Ü¾î¿Í ÅäÅ«À¸·Î ºÐ¸®ÇÑ´Ù. ±× ÇÔ¼ö°¡ ã´Â ÅäÅ«Àº ±½Àº ±Û¾¾Ã¼ÀÇ ½ÃÀÛÀ» ³ªÅ¸³»´Â '<B>'¿Í ±½Àº ±Û¾¾Ã¼ÀÇ ¸¶Áö¸·À» ³ªÅ¸³»´Â ' <\B>' ÀÌ´Ù. ±× ÇÔ¼ö get_bold´Â ÁøÇàÇϸ鼭 óÀ½°ú ¸¶Áö¸· ÅäÅ«À» Ž»öÇÑ´Ù.

¸®½ºÆ®ÀÇ ´ÙÀ½ »ç¾çÀº ±×µéÀ» º¹»çÇÏ´Â °ÍÀÌ´Ù. ¿©·¯ºÐÀÌ ´ÙÀ½°ú °°ÀÌ °£´ÜÇÑ ¾î¶² °ÍÀ» ½ÃµµÇØ º»´Ù¸é:

>>> a = [1,2,3]
>>> b = a
>>> print b
[1, 2, 3]
>>> b[1] = 10
>>> print b
[1, 10, 3]
>>> print a
[1, 10, 3]
ÀÌ°ÍÀº ¾Æ¸¶µµ ³î¶ó¿ö º¸ÀÏ °ÍÀÌ´Ù. ¿Ö³ÄÇϸé b ¿¡ ´ëÇÑ º¯°æÀÌ a ¸¦ º¯°æÇÑ °á°ú°¡ µÇ¾ú±â ¶§¹®ÀÌ´Ù. »óȲÀº 'b = a' ¼­¼ú¹®ÀÌ b ¸¦ a ¿¡ ´ëÇÑ ÂüÁ¶Á¡À¸·Î ¸¸µé¾ú±â ¶§¹®ÀÌ´Ù. ÀÌ°ÍÀÌ ¶æÇÏ´Â ¹Ù´Â b¸¦ aÀÇ ´Ù¸¥ À̸§À¸·Î »ý°¢Çصµ ÁÁ´Ù´Â °ÍÀ» ÀǹÌÇÑ´Ù. ±×·¯¹Ç·Î b¿¡ ´ëÇÑ ¾î¶°ÇÑ º¯°æµµ a ¸¦ ¿ª½Ã º¯°æ½ÃŲ´Ù. ±×·¸Áö¸¸ b Àüü¿¡´Ù ÇÒ´çÇÏ´Â ÇÔ¼ö¸¦ »ç¿ëÇϸ鼭 a ¸¦ º¯°æÇÏÁö ¸¶¶ó:
>>> a = [1,2,3]
>>> b = a
>>> b = b*2
>>> print a
[1, 2, 3]
>>> print b
[1, 2, 3, 1, 2, 3]
ÀÌ °æ¿ì¿¡´Â 'b = b*2'¼­¼ú¹®ÀÌ º¹»çº» Çϳª¸¦ »ý¼ºÇϹǷΠb ´Â ´õ ÀÌ»ó a¿¡ ´ëÇÑ ÂüÁ¶Á¡ÀÌ ¾Æ´Ï´Ù. ±âº»ÀûÀ¸·Î ¿©·¯ºÐÀÌ 'whole_list_b = whole_list_a'¿Í °°Àº ¼­¼ú¹®À» °¡Áö°í ÀÖ´Ù¸é ¿©·¯ºÐÀº ÇϳªÀÇ ÂüÁ¶¸¦ »ý¼ºÇÏ°í ÀÖ´Â °ÍÀÌ´Ù. ¿©·¯ºÐÀÌ ¸®½ºÆ®¸¦ Àμö·Î¼­ ÇÔ¼ö¿¡ ³Ñ±æ ¶§¿¡µµ ¿©·¯ºÐÀº ¿ª½Ã ÁÖ¼ÒÁ¡À» »ý¼ºÇÏ°í ÀÖ´Â °ÍÀÌ´Ù. whole_list_b ¿¡ ´ëÇÑ ºÎÂ÷ÀûÀÎ º¯°æÀº ¿ø·¡ÀÇ ¸®½ºÆ®¸¦ º¯°æÇÒ °ÍÀÌ´Ù. ´ëºÎºÐÀÇ °æ¿ì¿¡ ¿©·¯ºÐÀº ÀÌ·¯ÇÑ ºÒÀÏÄ¡¿¡ ´ëÇÏ¿© °ÆÁ¤ÇÒ ÇÊ¿ä°¡ ¾ø´Ù. ±×·¸Áö¸¸ ¿©·¯ºÐÀº ¸®½ºÆ®ÀÇ º¹»çº»À» °¡Áú ÇÊ¿ä°¡ ÀÖÀ» ¶§ ½ÇÁ¦·Î ÇϳªÀÇ º¹»çº»À» »ý¼ºÇß´ÂÁö È®½ÇÇÏ°Ô Çؾ߸¸ ÇÑ´Ù.

¸®½ºÆ®¸¦ º¹»çÇÏ´Â ¿©·¯ ¹æ¹ýµéÀÌ ÀÖ´Ù. ´ëºÎºÐÀÇ °æ¿ì¿¡ À־ Àß ÀÛµ¿ÇÏ´Â °¡Àå °£´ÜÇÑ °ÍÀº ½ä±â(slice) ¿¬»êÀÚÀÌ´Ù:

>>> a = [1,2,3]
>>> b = a[:]
>>> b[1] = 10
>>> print a
[1, 2, 3]
>>> print b
[1, 10, 3]
½ä±â "[:]"´Â ¸®½ºÆ®¿¡ ´ëÇÑ º¹»çº»À» »ý¼ºÇÑ´Ù. ±×·¸Áö¸¸ ¹Ù±ùÂÊ ¸®½ºÆ®¸¸ º¹»çÇÑ´Ù. ¸¸¾à ±× ¸®½ºÆ®°¡ ¸®½ºÆ®¸¦ Æ÷ÇÔÇÏ°í ÀÖ´Ù¸é ¾È ÂÊÀÇ ¸®½ºÆ®µµ ¿ª½Ã º¹»çµÉ ÇÊ¿ä°¡ ÀÖ´Ù. ¿©·¯ºÐÀº ±×°ÍÀ» ¼öµ¿À¸·Î ÇÒ ¼öµµ ÀÖ°ÔÁö¸¸, ÆÄÀ̽ãÀº ÀÌ¹Ì ±×·± ÀÏÀ» ÇÏ´Â ¸ðµÑÀ» Æ÷ÇÔÇÏ°í ÀÖ´Ù. ¿©·¯ºÐÀº copy ¸ðµâ¿¡ ÀÖ´Â deepcopy ÇÔ¼ö¸¦ »ç¿ëÇÒ ¼ö ÀÖ´Ù:
>>> import copy
>>> a = [[1,2,3],[4,5,6]]
>>> b = a[:]
>>> c = copy.deepcopy(a)
>>> b[0][1] = 10
>>> c[1][1] = 12
>>> print a
[[1, 10, 3], [4, 5, 6]]
>>> print b
[[1, 10, 3], [4, 5, 6]]
>>> print c
[[1, 2, 3], [4, 12, 6]]
¹«¾ùº¸´Ùµµ a ´Â ¹è¿­ÀÇ ¹è¿­À̶ó´Â °ÍÀ» ÁÖ¸ñÇ϶ó. ¾ÈÂÊÀÇ ¹è¿­Àº ½ä±â ¿¬»êÀÚ·Î Á¤È®ÇÏ°Ô º¹»çµÇÁö ¾Ê´Â´Ù. ±×·¸Áö¸¸ deepcopy·Î c´Â Á¤È®ÇÏ°Ô º¹»çµÈ´Ù. Àá-±ñ : ÀÌ·±°Ô Àǹ̰¡ Àִ°¡?

Áö±Ý±îÁö ¿©·¯ºÐÀº ¾Æ¸¶µµ ¿Ö ÂüÁ¶°¡ »ç¿ëµÇ´ÂÁö µµ´ëü ÀÌÇØ°¡ ¾È°¥ °ÍÀÌ´Ù? ±âº»ÀûÀÎ ÀÌÀ¯´Â ¼Ó·Â ¶§¹®ÀÌ´Ù. ¼öõÀÇ ¿ä¼Òµé ¸ðµÎ¸¦ º¹»çÇÏ´Â °Í º¸´Ù´Â ±×°ÍµéÀ» ÂüÁ¶ÇÏ´Â ÆíÀÌ ÈξÀ ´õ ºü¸£´Ù. ±×·¯Áö ¾Ê¾Æ¾ß ÇÒ¶§ µ¥ÀÌŸ°¡ º¯ÇÏ´Â ±«ÀÌÇÑ ¹®Á¦¸¦ ¿©·¯ºÐÀÌ °¡Áö´õ¶óµµ ÂüÁ¶¿¡ °üÇÏ¿© ¿©·¯ºÐÀº ´ÜÁö ÀÌ »ç½Ç¸¸Àº ±â¾ïÇ϶ó.


next up previous contents
Next: ¹®ÀÚ¿­ÀÇ º¹¼ö Up: ÀϹÝÀÎÀ» À§ÇÑ ÆÄÀ̽ã Áöħ¼­ Previous: ¸ðµâ »ç¿ëÇÏ±â   ¸ñ Â÷
Josh Cogliati jjc@iname.com