반응형
안녕하세요. 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() 함수 활용법에 대해서 적어보았습니다.
오늘도 읽어주셔서 감사합니다!
반응형
'<개인공부> > [Python]' 카테고리의 다른 글
[Python] 파이썬 딕셔너리에서 get() vs [] 차이점 (0) | 2025.03.19 |
---|---|
[Python] 파이썬 with open() 을 써야하는 이유 (0) | 2025.03.08 |
[Python] 파이썬 enumerate() 함수로 인덱스와 값 동시에 가져오기 (0) | 2025.02.17 |
[python] 파이썬 리스트를 문자열로 변환 하는 방법 (2) | 2022.05.07 |
[python] 파이썬 같지 않다 != 정리 (0) | 2021.11.15 |
[python] 파이썬 문자열 뒤집기, 거꾸로 출력 하기 3가지 방법 (0) | 2021.11.10 |
[python] 파이썬 버전 확인 방법 (윈도우, 맥북) (0) | 2021.11.08 |
[python] 파이썬 is와 ==의 차이 (값, 참조) (0) | 2021.11.05 |