>  기사  >  백엔드 개발  >  Python에서 `itertools.cycle`을 사용하여 다양한 크기의 목록을 압축하는 방법은 무엇입니까?

Python에서 `itertools.cycle`을 사용하여 다양한 크기의 목록을 압축하는 방법은 무엇입니까?

Linda Hamilton
Linda Hamilton원래의
2024-10-27 13:12:30680검색

How to Zip Differently Sized Lists Using `itertools.cycle` in Python?

내장 기능을 사용하여 크기가 다른 목록 압축

두 개의 목록을 병합할 때 내장된 zip 기능은 더 짧은 목록을 반복할 수 없지만 크기가 다른 목록의 경우 itertools.cycle 함수를 활용하여 이 결과를 얻을 수 있습니다.

Python 패키지 itertools의 사이클은 소진된 후에도 iterable에서 요소를 반복적으로 반환하는 반복기를 생성합니다. zip과 사이클을 결합하면 목록 간의 크기 불일치를 처리하고 필요에 따라 긴 목록이 반복되도록 할 수 있습니다.

예:

<code class="python">A = [1, 2, 3, 4, 5, 6, 7, 8, 9]
B = ["A", "B", "C"]

# Use itertools.cycle to repeat the shorter list
from itertools import cycle
zip_list = zip(A, cycle(B)) if len(A) > len(B) else zip(cycle(A), B)</code>

이 예에서는

  • if len(A) > len(B)는 첫 번째 목록(A)이 두 번째 목록(B)보다 긴지 확인합니다.
  • 그렇다면 zip을 사용하여 A를 순환 반복자 B와 병합하여 병합된 결과 전체에서 B를 효과적으로 반복합니다. .
  • B가 더 길면 순서를 바꾸고 대신 A를 순환합니다.

결과:

zip_list에는 다음 튜플이 포함됩니다. 생성기 객체로서:

[(1, 'A'), (2, 'B'), (3, 'C'), (4, 'A'), (5, 'B'), (6, 'C'), (7, 'A'), (8, 'B'), (9, 'C')]

작동 방식:

itertools.cycle은 iterable(이 경우 B)의 복사본을 생성하고 반복적으로 반환합니다. 강요. zip이 A를 반복하면서 각 요소를 순환 반복기에서 사용 가능한 다음 요소와 쌍을 이룹니다.

A가 B보다 짧은 경우 반복기가 소진되면 프로세스는 B의 처음부터 다시 시작됩니다. 반대로 A가 더 길면 B 반복자는 병합된 목록의 나머지 부분을 채우기 위해 계속 순환합니다.

위 내용은 Python에서 `itertools.cycle`을 사용하여 다양한 크기의 목록을 압축하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.