오늘의 파이썬 공부: zip() function

안녕하세요, 파이썬 학습에 오신 것을 환영합니다. 오늘은 파이썬의 강력한 내장 함수 중 하나인 ‘zip() function’에 대해 알아보겠습니다. 이 함수는 여러 시퀀스(리스트, 튜플 등)를 병렬로 처리할 때 매우 유용합니다. 특히 데이터 처리나 알고리즘 구현 시 각 컬렉션의 요소를 짝지어 사용할 때 유용하게 활용될 수 있습니다.

오늘의 파이썬 공부: zip() function

‘zip() function’ 기본 개념 이해하기

이 섹션에서는 ‘zip() function’의 기본 원리와 개념을 살펴보겠습니다. 이 기능의 작동 방식과 사용법을 이해하는 것이 중요합니다.

기본 문법 및 구조

‘zip() function’은 여러 시퀀스를 병렬로 순회하면서 각 시퀀스의 동일한 인덱스에 위치한 요소들을 튜플로 묶어줍니다. 다음은 기본적인 사용 예시입니다:

list1 = [1, 2, 3]
list2 = ['a', 'b', 'c']

zipped = zip(list1, list2)
print(list(zipped))  # 출력: [(1, 'a'), (2, 'b'), (3, 'c')]

이처럼 ‘zip() function’은 여러 리스트의 요소를 짝지어 새로운 튜플의 리스트를 생성합니다.

 

실용적인 활용 예제

이번 섹션에서는 ‘zip() function’이 실제 코딩에서 어떻게 활용되는지 다양한 예제를 통해 알아보겠습니다.

예제 1

첫 번째 예제로 학생의 이름과 점수를 매칭하여 출력하는 코드를 살펴보겠습니다.

students = ['Alice', 'Bob', 'Charlie']
scores = [85, 90, 95]

for student, score in zip(students, scores):
    print(f"{student}의 점수는 {score}입니다.")

이 코드는 각 학생의 이름과 점수를 짝지어 출력합니다. ‘zip() function’은 이러한 경우에 매우 유용합니다.

예제 2

이번에는 두 개 이상의 리스트를 동시에 정렬하는 방법을 살펴보겠습니다.

names = ['Alice', 'Bob', 'Charlie']
ages = [25, 30, 20]
heights = [165, 180, 175]

# 나이를 기준으로 정렬
sorted_data = sorted(zip(ages, names, heights))

for age, name, height in sorted_data:
    print(f"{name}은 {age}세, 키는 {height}cm입니다.")

이 예제에서는 나이를 기준으로 세 리스트를 동시에 정렬하며, ‘zip() function’은 여러 리스트를 함께 처리할 수 있게 해줍니다.

 

주의사항 및 팁

이번 섹션에서는 ‘zip() function’을 사용할 때 주의할 점과 알아두면 유용한 팁을 소개합니다.

흔히 하는 실수

‘zip() function’을 사용할 때 가장 흔한 실수 중 하나는 시퀀스의 길이가 다를 때 발생할 수 있습니다. ‘zip()’은 가장 짧은 시퀀스를 기준으로 묶기 때문에, 길이가 다른 시퀀스를 사용할 경우 데이터가 손실될 수 있습니다.

list1 = [1, 2, 3]
list2 = ['a', 'b']

zipped = zip(list1, list2)
print(list(zipped))  # 출력: [(1, 'a'), (2, 'b')]

위 예제에서 보듯이, list1의 마지막 요소는 짝지어지지 않습니다.

알아두면 좋은 팁

‘zip() function’을 사용할 때 시퀀스의 길이가 같지 않은 경우 ‘itertools.zip_longest()’를 사용하면 모든 요소를 포함할 수 있습니다.

from itertools import zip_longest

list1 = [1, 2, 3]
list2 = ['a', 'b']

zipped = zip_longest(list1, list2, fillvalue='N/A')
print(list(zipped))  # 출력: [(1, 'a'), (2, 'b'), (3, 'N/A')]

이 방법을 사용하면 짝지어지지 않은 요소에 기본값을 설정할 수 있습니다.

 

결론 및 요약

오늘은 ‘zip() function’의 기본 개념부터 실용적인 활용 예제, 주의사항 및 팁까지 다양한 내용을 살펴보았습니다. 이 함수는 여러 시퀀스를 동시에 처리할 때 매우 유용하며, 다양한 상황에서 활용할 수 있습니다. 여러분도 직접 코드를 작성해보며 ‘zip() function’의 강력함을 체감해보시길 바랍니다.