> 백엔드 개발 > 파이썬 튜토리얼 > 길이가 다른 Iterable을 처리하기 위해 Python의 zip() 함수를 어떻게 확장할 수 있습니까?

길이가 다른 Iterable을 처리하기 위해 Python의 zip() 함수를 어떻게 확장할 수 있습니까?

Linda Hamilton
풀어 주다: 2024-11-27 17:56:13
원래의
403명이 탐색했습니다.

How Can I Extend Python's zip() Function to Handle Iterables of Unequal Lengths?

zip() 기능 확장: 가장 긴 길이로 패딩

Python의 내장 zip() 함수는 여러 반복 가능 요소의 요소를 쌍으로 연결하지만 결과를 가장 짧은 반복 가능한 길이로 자릅니다. 가장 긴 입력에 맞게 None 값을 채우는 보다 포괄적인 zip이 필요한 경우 다음 해결 방법을 고려하세요.

Python 3: itertools.zip_longest

Python의 경우 3, itertools는 zip_longest() 기능을 제공합니다. 가장 긴 입력의 길이와 일치하도록 결과 목록을 확장합니다.

import itertools
a = ['a1']
b = ['b1', 'b2', 'b3']
c = ['c1', 'c2']

list(itertools.zip_longest(a, b, c))
# [('a1', 'b1', 'c1'), (None, 'b2', 'c2'), (None, 'b3', None)]
로그인 후 복사

fillvalue 매개변수를 사용하여 사용자 정의 채우기 값을 지정할 수 있습니다.

list(itertools.zip_longest(a, b, c, fillvalue='foo'))
# [('a1', 'b1', 'c1'), ('foo', 'b2', 'c2'), ('foo', 'b3', 'foo')]
로그인 후 복사

Python 2: itertools.izip_longest 또는 map None

Python 2에서는 다음을 사용할 수 있습니다. itertools.izip_longest(Python 2.6에서 도입됨) 또는 None으로 맵을 사용합니다.

from itertools import izip_longest
a = ['a1']
b = ['b1', 'b2', 'b3']
c = ['c1', 'c2']

list(izip_longest(a, b, c))
# [('a1', 'b1', 'c1'), (None, 'b2', 'c2'), (None, 'b3', None)]

map(None, a, b, c)
# [('a1', 'b1', 'c1'), (None, 'b2', 'c2'), (None, 'b3', None)]
로그인 후 복사

위 내용은 길이가 다른 Iterable을 처리하기 위해 Python의 zip() 함수를 어떻게 확장할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿