>  기사  >  백엔드 개발  >  Python에서 생성기가 비어 있는지 확인하는 방법

Python에서 생성기가 비어 있는지 확인하는 방법

Patricia Arquette
Patricia Arquette원래의
2024-10-20 10:40:02907검색

How to Determine If a Generator is Empty in Python

생성기의 비어 있음 확인

Python에서 생성기는 지연 평가 및 대규모 데이터 세트 반복을 위한 강력한 도구입니다. 그러나 발전기가 비어 있는지 확인하는 것은 동적 특성으로 인해 독특한 과제를 제시합니다. 목록이나 튜플과 달리 생성기에는 크기 속성이 없으며 단순히 반복하면 StopIteration 예외가 발생합니다.

Peek 대 HasNext

일부는 제안할 수도 있습니다. peek() 함수를 사용하여 생성기에 항목이 있는지 확인합니다. peek()를 사용하면 생성기를 사용하지 않고 생성기의 첫 번째 항목을 검색할 수 있지만 생성기가 비어 있는지 확인하는 방법은 제공되지 않습니다. 이는 peek()가 생성기가 비어 있을 때 StopIteration 예외를 발생시키기 때문입니다. 이는 빈 생성기에 대해 반복을 시도할 때 발생하는 예외와 구별할 수 없습니다.

마찬가지로 hasNext() 함수는 일반적으로 Java에 있는 는 Python 생성기에서는 사용할 수 없습니다.

시작부터 비어 있는지 확인

생성기가 처음부터 비어 있는지 확인하려면 다음을 사용할 수 있습니다. 응답에 제공된 것과 같은 사용자 정의 함수:

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

이 함수는 생성기의 첫 번째 요소를 검색하고 생성기가 비어 있으면 None을 반환합니다. 또한 첫 번째 요소를 포함하는 수정된 버전을 반환하여 생성기의 상태를 보존합니다.

사용법

이 함수를 사용하려면 생성기를 사용하여 호출할 수 있습니다. 인수:

<code class="python">res = peek(mysequence)
if res is None:
    # sequence is empty.  Do stuff.
else:
    first, mysequence = res
    # Do something with first, maybe?
    # Then iterate over the sequence:
    for element in mysequence:
        # etc.</code>

이 검사를 통해 생성기가 비어 있는지 확인하고 반복하기 전에 빈 케이스를 적절하게 처리할 수 있습니다.

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

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