[파이썬(Python)] zip 함수

권수현·2024년 1월 24일

zip()

여러개의 배열(순회가능한 객체라면 전부 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')]

0개의 댓글