본문 바로가기
Language & Tool/Python

🐍리스트를 묶는 zip 함수

by 박수무당벌레 2025. 6. 9.

1. 기본 개념

  • zip() 함수는 여러개의 순회 가능한(iterable) 객체를 병렬로 묶어서 튜플의 형태로 반환해주는 내장함수
  • Python 내장 모듈 itertools에 포함된 zip_longest는 길이가 다른 iterable 객체들도 끝까지 짝을 지을 수 있게 하는 함수
    (기본 내장 함수는 iterable 길이가 짧은 쪽을 기준으로 묶음)
  • <zip>이라는 iterator 객체를 반환, 한번만 순회 가능
  • 주로 for 문 루프에서 여러 리스트를 동시에 순회하거나 쌍(pair)을 만들때 사용됨
기본형 : zip 객체(iterator) = zip(iter1, iter2, ...)
확장형 : zip_longest 객체(iterator) = itertools.zip_longest(iter1, iter2, ..., [fillvalue=None])
※매개변수 의미
- fillvalue : 짧은 iterable의 빈자리를 채울 값

 

 

2.주요 특징

 

- for문과 함께 사용

# 예시
for num, char in zip([1, 2, 3], ['a', 'b', 'c']):
    print(num, char)

 

- 언패킹 가능 (zip 해제)

  • * 연산자를 통해 시퀸스 언팩 가능
  • matrix에 하면 전치(Row ↔ Column)가 됨 (= 같은 열끼리 묶여짐)
zipped = [(1, 'a'), (2, 'b'), (3, 'c')]
a, b = zip(*zipped)

 

- 딕셔너리 생성

# 예시
keys = ['name', 'age', 'city']
values = ['Alice', 25, 'New York']

dictionary = dict(zip(keys, values))  # {'name': 'Alice', 'age': 25, 'city': 'New York'}



3. zip() vs enumerate()

  • zip() : 여러개의 iterable을 묶음
  • enumerate() : iterable 에서 인덱스와 대응하는 값을 같이 반환