[pythonic code] ๋ฆฌ์ŠคํŠธ๊ฐ’์„ ์ถœ๋ ฅํ•˜๋Š” ๋‹ค์–‘ํ•œ ๋ฐฉ๋ฒ• enumerate() zip()

    ๋ฐ˜์‘ํ˜•

     

    ๐Ÿ’กenumerate()

    enumerate()ํ•จ์ˆ˜๋Š” ๋ฆฌ์ŠคํŠธ์˜ ๊ฐ’์„ ์ถ”์ถœํ•  ๋•Œ '์ธ๋ฑ์Šค๋ฅผ ๋ถ™์—ฌ' ํ•จ๊ป˜ ์ถœ๋ ฅํ•˜๋Š” ํ•จ์ˆ˜์ด๋‹ค.

     

    >>>seasons = ['Spring', 'Summer', 'Fall', 'Winter']
    
    >>>list(enumerate(seasons))
    [(0, 'Spring'), (1, 'Summer'), (2, 'Fall'), (3, 'Winter')]
    
    >>>list(enumerate(seasons, start=1))
    [(1, 'Spring'), (2, 'Summer'), (3, 'Fall'), (4, 'Winter')]

    enumerate()ํ•จ์ˆ˜์˜ start ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ ์ธ๋ฑ์Šค์˜ ์‹œ์ž‘์ ๋„ ์ง€์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.

     

    def enumerate(sequence, start=0):
        n = start
        for elem in sequence:
            yield n, elem
            n += 1

     

     

    ๐Ÿ’กzip()

    zip() ํ•จ์ˆ˜๋Š” 1๊ฐœ ์ด์ƒ์˜ ๋ฆฌ์ŠคํŠธ๊ฐ’์ด ๊ฐ™์€ ์ธ๋ฑ์Šค์— ์žˆ์„ ๋•Œ ๋ณ‘๋ ฌ๋กœ ๋ฌถ๋Š” ํ•จ์ˆ˜์ด๋‹ค.

    >>> lst_a = ['a1', 'a2', 'a3']
    >>> lst_b = ['b1', 'b2', 'b3']
    
    >>> for a, b in zip(lst_a, lst_b):
    ...     print(a, b)
    ...
    a1 b1
    a2 b2
    a3 b3
    >>> for item in zip([1, 2, 3], ['sugar', 'spice', 'everything nice']):
    ...     print(item)
    ...
    (1, 'sugar')
    (2, 'spice')
    (3, 'everything nice')

    zipํ•จ์ˆ˜๋Š” matrix๋ฅผ ์ „์น˜ํ•˜๋Š” ๊ฒƒ๊ณผ ๋น„์Šทํ•˜๋‹ค.

     

    >>> list(zip(range(3), ['fee', 'fi', 'fo', 'fum']))
    [(0, 'fee'), (1, 'fi'), (2, 'fo')]
    
    >>> list(zip(range(3), ['fee', 'fi', 'fo', 'fum'], strict=True))
    Traceback (most recent call last):
      ...
    ValueError: zip() argument 2 is longer than argument 1

    zip() ํ•จ์ˆ˜๋Š” ๊ฐ™์€ ์ธ๋ฑ์Šค์— ์žˆ์„ ๋•Œ ๋ฌถ์–ด์ฃผ๊ธฐ ๋•Œ๋ฌธ์—, ๋‘ ๊ฐœ์˜ list์˜ length๊ฐ€ ๊ฐ™์•„์•ผํ•˜๋Š”๋ฐ, ๋งŒ์•ฝ ๋‘ ๋ฆฌ์ŠคํŠธ์˜ length๊ฐ€ ๋‹ค๋ฅด๋ฉด ๊ฐ™์€ ๊ณณ ๊นŒ์ง€๋งŒ ๋ฌถ์–ด์ค€๋‹ค.

    ํ•˜์ง€๋งŒ, strict ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ true๋กœ ์ง€์ •ํ•˜๋ฉด ๋‘ ๋ฆฌ์ŠคํŠธ์˜ length๊ฐ€ ๋‹ค๋ฅด๋ฉด error๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.

     

    ๋ฐ˜์‘ํ˜•

    ๋Œ“๊ธ€