파이썬(Python)/문법

파이썬 zip함수, 별표(*)

끄적끄적아무거나 2020. 12. 10. 10:50
반응형

코드 >>

a_var = [0,1,2,3,4]
b_var = [0,1,2,3]
c_var = [2,4,6,8]

print(zip(a_var,b_var,c_var))
print(list(zip(a_var,b_var,c_var)))
print(*list(zip(a_var,b_var,c_var)))

결과 >>

<zip object at 0x000001E3C0BA4340>
[(0, 0, 2), (1, 1, 4), (2, 2, 6), (3, 3, 8)]
(0, 0, 2) (1, 1, 4) (2, 2, 6) (3, 3, 8)

 

주석 >>

zip 함수는 iterable 의 반복 가능한 자료형을 입력으로 받는다.

 

입력받은 인자 값의 갯수 중 최소 갯수를 받아서 묶어서 튜플로 보내 준다.

 

위의 예제에서는 b_var, c_var의 갯수가 4개로 가장 작으므로 4개의 튜플이 생긴다. 첫번째 튜플은 각 인자의 첫번째 값을 받아서 (0,0,2)가 된다.

 

다음으로 위에서 list를 붙이지 않으면 zip object 주소 값만 나온다.

 

의미를 예로 들면 붕어빵 만드는 틀을 만들었으니 list만 붙이면 실제 붕어빵을 만들겠다는 뜻이다. 이러한 형태의 장점은 붕어빵을 만들기 전까지는 메모리를 소비하지 않을 수 있게 해준다. 그래서 필요때마다 메모리를 소비하면 되는 것이다.

 

그리고 위에 list앞에 별표 붙은 부분은 unpack 하는 것으로 list나 tuple을 풀어 주는 것이다. 만일 별표가 두개이면 dictionary 형태를 unpack 해준다고 보면 된다.

 

 

 

 

반응형