[Python] zip() ํ•จ์ˆ˜๋ฅผ ์ด์šฉํ•œ ์ง‘์ ํ™”

2024. 4. 15. 17:36ใ†[๐Ÿ’ปPython] pearl's python ๋ณ‘์•„๋ฆฌ ํƒˆ์ถœ๊ธฐ ๐Ÿฃ

iterable ์ž๋ฃŒํ˜• (๋ฐ˜๋ณต ๊ฐ€๋Šฅํ•œ ์ž๋ฃŒํ˜•)
  • ๋ฆฌ์ŠคํŠธ, ๋”•์…”๋„ˆ๋ฆฌ, ์ง‘ํ•ฉ, ํŠœํ”Œ๊ณผ ๊ฐ™์€ ์ž๋ฃŒํ˜•
zip() ๋ฉ”์†Œ๋“œ๋Š”?
  • for๋ฌธ์—์„œ ๋งŽ์ด ์‚ฌ์šฉํ•œ๋‹ค. 
  • ๋ฐ˜๋ณต ๊ฐ€๋Šฅ ์ž๋ฃŒํ˜• ์—ฌ๋Ÿฌ๊ฐœ๋ฅผ ๋„˜๊ฒจ์ฃผ๋ฉด, ์ด๋“ค์„ ํ•ฉ์ณ์„œ ํŠœํ”Œ ๋ฐ˜๋ณต์ž iterator๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ํ•จ์ˆ˜๊ฐ€ zip() ํ•จ์ˆ˜
  •  zip() ํ•จ์ˆ˜๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์—ฌ๋Ÿฌ ๊ฐœ์˜ ๋ฐ˜๋ณต ๊ฐ€๋Šฅ ์ž๋ฃŒํ˜•์„ ๋ฐ›์„์ˆ˜์žˆ๋‹ค. ์ด๋ฅผ ์ง‘์ ํ™”aggregation๋ผ๊ณ  ํ•œ๋‹ค.
a = [10, 20, 30] 
b = ('ten', 'twenty', 'thirty') 
for val in zip(a, b): #๋ฆฌ์ŠคํŠธa์™€ ํŠœํ”Œb๋ฅผ ์ง‘์ ํ™”ํ•˜์—ฌ ์ƒ์„ฑ๋œ ํŠœํ”Œ์„ ์ถœ๋ ฅ
    print(val)
   
#์˜ˆ์ƒ ์ถœ๋ ฅ : 
(10, 'ten')
(20, 'twenty')
(30, 'thirty')

 

zip ๋ฉ”์†Œ๋“œ ํ’€๊ธฐ(์–ธํŒจํ‚น)
  • zip() ํ•จ์ˆ˜๋ฅผ ํ†ตํ•ด ๋ฌถ์—ฌ์ง„ ํŠœํ”Œ๋“ค์„ ์›๋ž˜์˜ ๋ฐ˜๋ณต๊ฐ€๋Šฅ์ž๋ฃŒ๋“ค๋กœ ๋˜๋Œ๋ฆฌ๋Š” ์ž‘์—…
  • ๋‹ค๋ฅธ ํ•จ์ˆ˜๋ฅผ ์“ฐ๋Š”๊ฒƒ์ด ์•„๋‹ˆ๋ผ zip() ํ•จ์ˆ˜์— ๋ฌถ์ธ ์ž๋ฃŒ๋ฅผ ์ธ์ž๋กœ ์ž…๋ ฅํ•˜๊ณ * ์—ฐ์‚ฐ์ž๋ฅผ ์ธ์ž ์•ž์— ๋ถ™์ด๊ธฐ
str_list = ["๋†ˆํŒฝ์ด", "๋‹ฌํŒฝ์ด", "์•„์ด์Šคํฌ๋ฆผ"]
int_tuple = (1,2,3,4,5)
int_list = [1,2,3,3,3,3,3]
zip_lst = list(zip(str_list, int_tuple, int_list))  # ์ธ๋ฑ์Šค 2๋ฒˆ์˜ ์›์†Œ๊นŒ์ง€๋งŒ ์ €์žฅ์ด ๋œ๋‹ค. 
a, b, c = zip(*zip_lst) 
print(a, b, c)

#์˜ˆ์ƒ ์ถœ๋ ฅ : ('๋†ˆํŒฝ์ด', '๋‹ฌํŒฝ์ด', '์•„์ด์Šคํฌ๋ฆผ') (1, 2, 3) (1, 2, 3) #์ธ๋ฑ์Šค 0,1,2๋ฒˆ๊นŒ์ง€๋งŒ ์–ธํŒจํ‚น๋œ๋‹ค