[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๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.

 

๋ฐ˜์‘ํ˜•

๋Œ“๊ธ€