zip에 대한 모든것

Leejaegun·2025년 3월 17일

코딩테스트 시리즈

목록 보기
19/49

zip() 사용법 총정리

zip()은 여러 개의 iterable(리스트, 튜플 등)을 묶어서 동시에 순회할 때 사용됨.

1️⃣ 기본 사용법

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) → 두 리스트의 요소를 짝지어 튜플로 반환

2️⃣ for문에서 활용

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에 매핑되어 동시에 순회 가능

3️⃣ 길이가 다른 리스트를 zip하면?

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'로 남은 값 채울 수 있음

4️⃣ 리스트 Unzip (역변환)

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) → 원래 리스트로 분리

5️⃣ 여러 리스트 동시에 정렬

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해서 이름과 점수를 분리

6️⃣ 딕셔너리 변환

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)) → 키-값 쌍으로 딕셔너리 생성

✅ 정리

기능코드설명
기본 zipzip(a, b)리스트를 튜플로 묶기
forfor x, y in zip(a, b):동시에 순회
길이 다를 때zip_longest(a, b, fillvalue=X)짧은 쪽에 맞추거나 채우기
Unzipzip(*zipped_list)원래 리스트로 변환
정렬sorted(zip(scores, names))여러 리스트 동시 정렬
딕셔너리 변환dict(zip(keys, values))키-값 딕셔너리 만들기

💡 코딩 테스트에서 자주 쓰이는 기능이니 잘 익혀두면 유용함! 🚀

profile
Lee_AA

0개의 댓글