어제 오늘 내일

[Python 기초] "따로 노는 리스트를 하나로 묶자!" zip() 함수 활용법 본문

IT/Python

[Python 기초] "따로 노는 리스트를 하나로 묶자!" zip() 함수 활용법

hi.anna 2026. 5. 24. 06:34

 

zip()은 이름처럼 여러 개의 지퍼를 하나로 잠그듯, 서로 다른 리스트들의 요소를 같은 인덱스끼리 쏙쏙 뽑아 짝을 지어주는 함수입니다.


1. 기본 사용법: 리스트 짝꿍 만들기

두 개의 리스트에서 같은 번호에 있는 데이터끼리 묶어서 튜플(()) 형태로 보여줍니다.

📌 예제 코드: 이름과 점수 매칭

names = ["철수", "영희", "민수"]
scores = [85, 90, 100]

# zip으로 묶은 뒤 리스트로 변환해서 확인
zipped = list(zip(names, scores))

print(zipped)
# 출력: [('철수', 85), ('영희', 90), ('민수', 100)]

2. 실무 1등 문법: 딕셔너리로 즉시 변환

zip()의 가장 강력한 용도는 두 리스트를 Key와 Value의 관계로 만드는 것입니다. dict() 함수와 결합하면 1초 만에 데이터베이스 형태가 완성됩니다.

📌 예제 코드: 리스트 ➔ 딕셔너리

keys = ["id", "name", "email"]
values = [101, "Kim", "kim@test.com"]

# zip을 dict로 감싸면 앞의 리스트는 Key, 뒤는 Value가 됩니다.
user_dict = dict(zip(keys, values))

print(user_dict)
# 출력: {'id': 101, 'name': 'Kim', 'email': 'kim@test.com'}

3. 반복문()에서 동시에 꺼내 쓰기

리스트 두 개를 동시에 돌리면서 값을 활용하고 싶을 때 range(len(list))를 쓰는 것보다 훨씬 읽기 좋은 코드를 만들어줍니다.

📌 예제 코드: 동시 순회

fruits = ["Apple", "Banana", "Orange"]
prices = [1000, 500, 700]

for fruit, price in zip(fruits, prices):
    print(f"{fruit}의 가격은 {price}원입니다.")

# 출력:
# Apple의 가격은 1000원입니다.
# Banana의 가격은 500원입니다.
# Orange의 가격은 700원입니다.

⚠️ 주의사항: 길이가 다르면 어떻게 되나요?

zip()은 아주 냉정합니다. 리스트들의 길이가 서로 다르면 가장 짧은 리스트의 길이에 맞춰서 남는 데이터는 그냥 버려버립니다.

a = [1, 2, 3]
b = ["A", "B"]

print(list(zip(a, b)))
# 출력: [(1, 'A'), (2, 'B')]  <-- 3은 짝이 없어서 사라집니다!

(💡 꿀팁: 만약 남는 데이터도 다 챙기고 싶다면 itertools.zip_longest라는 함수를 사용하면 됩니다.)


📝 요약

  1. zip(list1, list2): 같은 순서의 데이터를 튜플로 묶어준다.
  2. dict(zip(keys, values)): 두 리스트를 딕셔너리로 변환할 때 최고다.
  3. 순회: 여러 리스트를 동시에 for문으로 돌릴 때 가독성이 좋다.

이제 리스트를 합치고, 자르고, 뒤집고, 대조하고, 짝짓는 모든 기초 기술을 습득하셨습니다!
 

반응형
Comments