>백엔드 개발 >파이썬 튜토리얼 >반복하기 전에 생성기가 비어 있는지 확인하는 방법은 무엇입니까?

반복하기 전에 생성기가 비어 있는지 확인하는 방법은 무엇입니까?

Patricia Arquette
Patricia Arquette원래의
2024-10-20 12:12:301030검색

How to Check if a Generator is Empty Before Iterating?

반복 전 생성기 비어 있음 확인

생성기로 작업할 때 생성기가 비어 있는지 미리 확인하는 것이 도움이 될 수 있습니다. 이렇게 하면 불필요한 처리가 방지되고 코드 복잡성이 줄어듭니다.

이를 달성하기 위한 한 가지 접근 방식은 생성기의 첫 번째 요소를 검색하려고 시도하는 peek 기능을 활용하는 것입니다. StopIteration 예외가 발생하면 이는 빈 생성기를 의미합니다. 구현은 다음과 같습니다.

<code class="python">def peek(iterable):
    try:
        first = next(iterable)
    except StopIteration:
        return None
    return first, itertools.chain([first], iterable)</code>

이 함수에서:

  • next(iterable)는 생성기의 첫 번째 요소를 검색하거나 비어 있는 경우 StopIteration 예외를 발생시킵니다.
  • 결과가 먼저 저장됩니다. 비어 있으면 first는 None입니다.
  • 생성기의 상태를 보존하기 위해 원래 iterable은 itertools.chain([first], iterable)을 사용하여 새 항목으로 래핑됩니다.

이 기능을 다음과 같이 사용할 수 있습니다.

<code class="python">res = peek(mysequence)
if res is None:
    # Generator is empty
elif res[0] is None:
    # Generator is not empty but first element is None
else:
    # Generator is not empty with non-None first element</code>

이 접근 방식은 반복 전에 생성기의 비어 있음을 효과적으로 결정하여 코드를 최적화하고 빈 생성기를 우아하게 처리하는 편리한 방법을 제공합니다.

위 내용은 반복하기 전에 생성기가 비어 있는지 확인하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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