특정한 메소드가 아니라, 내장 함수 또는 기능인 zip
과 unzip
은 기본 라이브러리에 포함되어 있어 별도의 import가 필요하지 않음.
라이브러리
내장 함수
사용 조건
여러 개의 iterable 객체(리스트, 튜플 등)를 동시에 반복하며
각 객체의 같은 인덱스에 있는 요소들을 튜플로 묶어 새로운 iterable을 생성할 때 사용함.
역할 및 예시 코드
# zip 함수를 사용하여 두 리스트를 묶기
list1 = [1, 2, 3]
list2 = ['a', 'b', 'c']
zipped = zip(list1, list2)
# 결과 출력
for item in zipped:
print(item)
위 코드는 다음과 같은 결과를 출력함.
(1, 'a') (2, 'b') (3, 'c')
zip 함수의 결과를 다시 원래의 리스트로 풀어내려면 zip(*iterables)
형태로 사용해야 함.
이를 unzip
이라고 부르기도 합니다.
역할 및 예시 코드
# zip 함수를 사용하여 두 리스트를 묶기
list1 = [1, 2, 3]
list2 = ['a', 'b', 'c']
zipped = zip(list1, list2)
# unzip을 통해 다시 원래의 리스트로 분리
unzipped = list(zip(*zipped))
# 결과 출력
print(unzipped)
위 코드는 다음과 같은 결과를 출력함.
[(1, 2, 3), ('a', 'b', 'c')]
zip 함수를 이용하지 않고 같은 작업을 수행하려면
range 함수와 인덱스를 활용하여 리스트의 각 요소에 접근할 수 있음.
list1 = [1, 2, 3]
list2 = ['a', 'b', 'c']
# 직접 인덱스를 활용하여 두 리스트를 묶기
result = [(list1[i], list2[i]) for i in range(min(len(list1), len(list2)))]
# 결과 출력
print(result)
이 방식은 결과적으로 zip 함수와 비슷한 동작을 진행함.
다만, zip 함수는 간결하게 표현할 수 있고, 인덱스를 직접 다루지 않아도 되어 코드가 더 간단해 짐.