<개인공부>/[Python]

[Python] 파이썬 zip() 함수 활용법

BlockDMask 2025. 3. 23. 08:10
반응형

안녕하세요. BlockDMask 입니다.
오늘은 파이썬에서 리스트, 튜플 등의 자료형을 효율적으로 묶어주는 zip() 함수에 대해 알아보겠습니다.

zip() 함수는 여러 개의 이터러블(iterable)을 하나의 튜플로 묶어주는 기능을 합니다. 이 함수는 데이터 리스트를 병렬 처리할 때 매우 유용합니다.

 


1. zip() 함수란?

zip() 함수는 여러 개의 리스트, 튜플 등을 인덱스별로 묶어 튜플 형태로 반환하는 함수입니다.

zip(iterable1, iterable2, ...)

 

zip() 기본 사용 예제

names = ["Alice", "Bob", "Charlie"]
ages = [25, 30, 35]

zipped = zip(names, ages)
print(list(zipped))  # [('Alice', 25), ('Bob', 30), ('Charlie', 35)]
  • zip()은 같은 인덱스에 있는 요소들을 튜플로 묶어서 반환합니다.
  • list(zipped)로 변환하면 결과를 리스트로 볼 수 있습니다.

 


2. zip()을 활용한 반복문 처리

zip()은 for 반복문과 함께 사용하면 편리합니다.

names = ["Alice", "BlockDMask", "Charlie"]
ages = [25, 30, 35]

for name, age in zip(names, ages):
    print(f"{name}의 나이는 {age}세 입니다.")

출력 결과:

Alice의 나이는 25세 입니다.
BlockDMask의 나이는 30세 입니다.
Charlie의 나이는 35세 입니다.

 

 


3. zip()을 활용한 딕셔너리 생성

딕셔너리를 만들 때 zip()을 사용하면 키-값 쌍을 쉽게 생성할 수 있습니다.

keys = ["name", "age", "city"]
values = ["Alice", 25, "Seoul"]

person = dict(zip(keys, values))
print(person)  # {'name': 'Alice', 'age': 25, 'city': 'Seoul'}
  • zip()을 이용해 키와 값을 묶은 후 dict()를 사용하면 딕셔너리를 쉽게 만들 수 있습니다.

 


4. zip()과 * 연산자 (언패킹)

zip()으로 묶인 데이터를 다시 풀어서 원래의 리스트로 변환할 수도 있습니다.

pairs = [("Alice", 25), ("BlockDMask", 30), ("Charlie", 35)]
names, ages = zip(*pairs)

print(names)  # ('Alice', 'BlockDMask', 'Charlie')
print(ages)   # (25, 30, 35)
  • zip(*zipped)을 사용하면 원래의 리스트나 튜플로 변환할 수 있습니다.

 


5. zip()과 enumerate() 함께 사용하기

zip()과 enumerate()를 함께 사용하면 리스트의 인덱스와 값을 동시에 다룰 수 있습니다.

names = ["Alice", "BlockDMask", "Charlie"]
ages = [25, 30, 35]

for idx, (name, age) in enumerate(zip(names, ages), start=1):
    print(f"{idx}. {name}의 나이는 {age}세 입니다.")

출력 결과:

1. Alice의 나이는 25세 입니다.
2. BlockDMask 나이는 30세 입니다.
3. Charlie의 나이는 35세 입니다.

 

 


6. zip()의 주의할 점 (길이가 다른 리스트 처리)

리스트 길이가 다를 경우, zip()은 가장 짧은 리스트를 기준으로 조합됩니다.

names = ["Alice", "BlockDMask"]
ages = [25, 30, 35]

print(list(zip(names, ages)))  # [('Alice', 25), ('BlockDMask', 30)]
  • 리스트 길이가 다르면 초과된 요소는 무시됩니다.
  • 모든 요소를 맞추려면 itertools.zip_longest()를 사용할 수도 있습니다.
from itertools import zip_longest

print(list(zip_longest(names, ages, fillvalue="N/A")))
# [('Alice', 25), ('BlockDMask', 30), ('N/A', 35)]
  • fillvalue를 지정하면 부족한 값을 채울 수 있습니다.

 


7. 결론

✅ zip()은 여러 리스트를 인덱스별로 묶어서 튜플 형태로 반환하는 함수입니다.
✅ zip()을 이용하면 반복문, 딕셔너리 생성, 언패킹 등의 다양한 활용이 가능합니다.
✅ 리스트의 길이가 다를 경우 zip()은 가장 짧은 리스트를 기준으로 동작하므로 주의해야 합니다.
✅ 부족한 데이터를 채우려면 itertools.zip_longest()를 사용할 수 있습니다.

 

 

이상, 파이썬 zip() 함수 활용법에 대해서 적어보았습니다.
오늘도 읽어주셔서 감사합니다!

반응형