zip() 사용법 총정리zip()은 여러 개의 iterable(리스트, 튜플 등)을 묶어서 동시에 순회할 때 사용됨.
a = [1, 2, 3]
b = ['a', 'b', 'c']
zipped = zip(a, b) # zip 객체 생성
print(list(zipped)) # [(1, 'a'), (2, 'b'), (3, 'c')]
zip(a, b) → 두 리스트의 요소를 짝지어 튜플로 반환names = ["Alice", "Bob", "Charlie"]
scores = [85, 92, 78]
for name, score in zip(names, scores):
print(f"{name}: {score}")
출력
Alice: 85
Bob: 92
Charlie: 78
name, score에 매핑되어 동시에 순회 가능a = [1, 2, 3, 4]
b = ['a', 'b']
print(list(zip(a, b))) # [(1, 'a'), (2, 'b')]
길이가 맞지 않는 경우 남은 요소도 유지하려면?
👉 zip_longest() 사용 (itertools)
from itertools import zip_longest
print(list(zip_longest(a, b, fillvalue='X')))
# [(1, 'a'), (2, 'b'), (3, 'X'), (4, 'X')]
fillvalue='X'로 남은 값 채울 수 있음zipped_list = [(1, 'a'), (2, 'b'), (3, 'c')]
a, b = zip(*zipped_list) # Unzip
print(a) # (1, 2, 3)
print(b) # ('a', 'b', 'c')
zip(*zipped_list) → 원래 리스트로 분리names = ["Alice", "Bob", "Charlie"]
scores = [85, 92, 78]
sorted_names, sorted_scores = zip(*sorted(zip(scores, names), reverse=True))
print(sorted_names) # ('Bob', 'Alice', 'Charlie')
print(sorted_scores) # (92, 85, 78)
zip(scores, names) → 점수를 기준으로 묶기sorted(..., reverse=True) → 점수 내림차순 정렬zip(*...) → Unzip해서 이름과 점수를 분리keys = ["name", "age", "city"]
values = ["Alice", 25, "NY"]
dict_result = dict(zip(keys, values))
print(dict_result)
# {'name': 'Alice', 'age': 25, 'city': 'NY'}
dict(zip(keys, values)) → 키-값 쌍으로 딕셔너리 생성| 기능 | 코드 | 설명 |
|---|---|---|
| 기본 zip | zip(a, b) | 리스트를 튜플로 묶기 |
for 문 | for x, y in zip(a, b): | 동시에 순회 |
| 길이 다를 때 | zip_longest(a, b, fillvalue=X) | 짧은 쪽에 맞추거나 채우기 |
| Unzip | zip(*zipped_list) | 원래 리스트로 변환 |
| 정렬 | sorted(zip(scores, names)) | 여러 리스트 동시 정렬 |
| 딕셔너리 변환 | dict(zip(keys, values)) | 키-값 딕셔너리 만들기 |
💡 코딩 테스트에서 자주 쓰이는 기능이니 잘 익혀두면 유용함! 🚀