728x90
안녕하세요
오늘은 python 내장함수 zip의 사용법에 대해서 예제를 통해 알아보도록 하겠습니다.
전체 코드입니다
main.py
# 기본 예제: 두 리스트 묶기
names = ["철수", "영희", "민수"]
scores = [90, 85, 77]
print("=== 기본 예제 ===")
for name, score in zip(names, scores):
print(f"{name}: {score}")
# 출력:
# 철수: 90
# 영희: 85
# 민수: 77
# 여러 개 리스트 묶기
subjects = ["국어", "수학", "영어"]
print("\n=== 세 개 리스트 묶기 ===")
for name, score, subject in zip(names, scores, subjects):
print(f"{name}의 {subject} 점수: {score}")
# 길이가 다른 경우: 짧은 쪽에 맞춰짐
extra_scores = [100, 95] # 2명만 있음
print("\n=== 길이가 다른 경우 ===")
for name, score in zip(names, extra_scores):
print(f"{name}: {score}")
# '민수'는 출력되지 않음 (짧은 리스트 길이에 맞춰 반복 종료)
# zip을 리스트/딕셔너리로 변환하기
print("\n=== 자료구조 변환 ===")
zipped = zip(names, scores)
print(list(zipped)) # [('철수', 90), ('영희', 85), ('민수', 77)]
# zip 객체는 한 번만 소모되므로 다시 생성해야 함
zipped = zip(names, scores)
print(dict(zipped)) # {'철수': 90, '영희': 85, '민수': 77}
# 실무 활용: 두 파일 라인의 차이 비교
print("\n=== 실무 활용 예시: 두 문자열 리스트 비교 ===")
old_lines = ["print('Hello')", "x = 10", "y = 20"]
new_lines = ["print('Hi')", "x = 10", "y = 25"]
for old, new in zip(old_lines, new_lines):
if old != new:
print(f"변경됨: {old} --> {new}")
# 출력:
# 변경됨: print('Hello') --> print('Hi')
# 변경됨: y = 20 --> y = 25
결과입니다
- zip()은 여러 시퀀스를 동시에 순회할 때 직관적이고 안전한 방법.
- 길이가 다르면 자동으로 짧은 쪽에 맞춰 멈춤.
- list(), dict()로 변환하면 데이터 구조화에 유용.
- range(len(...)) 보다 파이썬다운(Pythonic) 코드 작성이 가능.
이처럼, zip은 '데이터를 묶어서 같이 돌린다'는 뜻이 코드에 명확히 드러나
가독성과 유지보수성이 좋아집니다.
'Python' 카테고리의 다른 글
[Python] 파이썬으로 AI 감정 분석 해보기 (0) | 2025.09.17 |
---|---|
[Python] Hugging Face Transformers로 문서 요약하기 (0) | 2025.09.16 |
[Python] Hugging Face의 transformers 라이브러리를 활용한 감정 분석(Sentiment Analysis) (0) | 2025.09.11 |
[Python] 문서 임베딩으로 간단한 의미 검색기 만들기 (sentence-transformers) (0) | 2025.09.10 |
[Python] Hugging Face의 pipeline 함수를 활용한 AI 사용 예제 (0) | 2025.09.08 |