여러개의 배열(순회가능한 객체라면 전부 ok)을 인자로 받고, 각 배열이 담소 있는 원소를 튜플의 형태로 차례대로 접근할 수 있는 iterator를 반환한다.
즉, 여러개의 배열에 한번에 접근할 수 있게 한다.❗
nums = [1,2,3,4]
chars = ['a','b','c','d']
for num,char in zip(nums,chars):
print(num,char)
# 출력결과
1 a
2 b
3 c
4 d
# item 1개에 맵핑해보면 튜플로 반환되는 것을 확인할 수 있다.
for item in zip(nums,chars):
print(item)
# 출력결과
(1, 'a')
(2, 'b')
(3, 'c')
(4, 'd')
만약 동시에 접근하려는 배열의 길이가 다르다면 가장 짧은 길이를 따라간다.
zip() 함수의 결과를 다시 zip()의 인자로 넣으면 다시 원래의 두 배열을 얻을 수 있다.
nums = [1,2,3,4]
chars = ['a','b','c','d']
zips = zip(nums,chars)
num,char = zip(*zips)
print(num, char)
# 출력결과
(1, 2, 3, 4) ('a', 'b', 'c', 'd')
원래의 자료형과는 달리 튜플로 반환되긴 한다.
반복자(iterator)로만 사용하는게 아닌 list등으로 형변환이 가능하다.
nums = [1,2,3,4]
chars = ['a','b','c','d']
print(list(zip(nums,chars)))
# 출력결과
[(1, 'a'), (2, 'b'), (3, 'c'), (4, 'd')]