Python에서 zip() 함수를 사용하는 방법(반복 가능 항목 결합)
Python의 zip() 함수를 사용하여 여러 반복 가능 항목을 병렬로 결합하는 방법을 알아보세요. 사전 생성을 마스터하고 논리 압축을 풀고 길이 불일치를 처리합니다.
개요
데이터 세트를 반복할 때 여러 관련 목록을 병렬로 처리해야 하는 경우가 많습니다. 예를 들어 사용자 이름 목록을 사용자 ID 목록과 페어링하거나 X 및 Y 값의 좌표를 일치시킵니다. 중첩 루프나 목록 인덱싱 카운터를 사용하여 항목에 액세스하는 대신 Python은 우아한 `zip()` 기능을 제공합니다.
`zip(*iterables)` 함수는 여러 반복 가능 항목을 인수로 취하고 이를 집계하여 i 번째 튜플이 각 입력 반복 가능 항목의 i 번째 요소를 포함하는 튜플의 반복자를 반환합니다. 이를 통해 단일 `for` 루프를 사용하여 두 개 이상의 컬렉션을 동시에 쉽게 반복할 수 있습니다.
기본적으로 'zip()'은 가장 짧은 입력 반복 가능 항목이 소진되면 결합을 중지합니다. 더 긴 반복 가능 항목의 나머지 요소는 삭제됩니다. 가장 긴 반복 가능 항목이 소진될 때까지 요소를 쌍으로 만들고 누락된 값을 자리 표시자로 채우려는 경우 Python은 표준 라이브러리의 `itertools` 모듈에 `zip_longest()`를 제공합니다.
코드 및 실행 출력
이 스크립트는 병렬 목록 반복, zip을 사용하여 사전 생성, zip_longest를 사용하여 불일치 처리를 보여줍니다.
from itertools import zip_longest
names = ["Alice", "Bob", "Charlie"]
scores = [85, 90, 95]
# 1. Basic Zipping in a loop
print("--- Parallel Iteration ---")
for name, score in zip(names, scores):
print(f"{name} scored {score}")
# 2. Creating a dictionary from two lists
user_dict = dict(zip(names, scores))
print("\nCreated Dictionary:", user_dict)
# 3. Handling unequal list lengths with zip_longest
extra_names = ["Alice", "Bob", "Charlie", "David"]
short_scores = [85, 90]
# Standard zip truncates
print("\nStandard zip output:", list(zip(extra_names, short_scores)))
# zip_longest fills missing values
zipped_long = list(zip_longest(extra_names, short_scores, fillvalue="N/A"))
print("zip_longest output:", zipped_long)--- Parallel Iteration ---
Alice scored 85
Bob scored 90
Charlie scored 95
Created Dictionary: {'Alice': 85, 'Bob': 90, 'Charlie': 95}
Standard zip output: [('Alice', 85), ('Bob', 90)]
zip_longest output: [('Alice', 85), ('Bob', 90), ('Charlie', 'N/A'), ('David', 'N/A')]단계별 구현
- zip() 함수에 결합하려는 여러 목록이나 반복 가능 항목을 전달합니다.
- 깔끔한 병렬 반복을 위해 for 루프 문에서 생성된 튜플을 압축 해제합니다.
- 매핑을 위해 dict(zip(keys_list, value_list)) 를 사용하여 zip 객체를 사전으로 변환합니다.
- tail 값을 잃지 않고 길이가 다른 목록을 결합하려면 itertools.zip_longest를 가져옵니다.
자주 묻는 질문
압축된 튜플 시퀀스를 어떻게 "압축 해제"합니까?
압축 풀기 연산자 *: list(zip(*zipped_tuples))를 사용하여 시퀀스를 다시 별도의 목록으로 압축을 풀 수 있습니다.
zip()이 메모리의 요소를 복제합니까?
아니요, zip()은 요청 시 요소를 생성하는 반복자를 반환하므로 메모리 효율성이 매우 높습니다.
관련 주제
권장 Python 리소스
관련 대화형 튜토리얼, 치트 시트, 코드 비교를 통해 지식을 확장하세요.
Python 함수
Python 함수를 마스터하세요. def를 사용하여 재사용 가능한 코드를 작성하고, 인수를 정의하고, 값을 반환하고, 로컬 및 전역적으로 범위를 이해하는 방법을 알아보세요.
Python 수학 모듈 함수 치트 시트
Python 수학 표준 라이브러리에 대한 빠른 참조 가이드입니다. 삼각함수, 로그, 반올림 및 산술 함수를 사용하는 방법을 알아보세요.
Python 대 JavaScript: 어떤 프로그래밍 언어가 가장 좋나요?
Python과 JavaScript를 포괄적으로 비교합니다. 구문 차이점, 성능, 사용 사례(백엔드와 프런트엔드) 및 코딩 예제를 살펴보세요.