>백엔드 개발 >파이썬 튜토리얼 >반복자를 두 번 반복할 수 없는 이유는 무엇입니까?

반복자를 두 번 반복할 수 없는 이유는 무엇입니까?

Linda Hamilton
Linda Hamilton원래의
2024-12-21 02:26:09838검색

Why Can't I Iterate Over an Iterator Twice?

Iterable이 두 번 반복될 수 없는 이유

반복자와 반복자를 다룰 때는 소비 특성을 이해하는 것이 중요합니다. Python에서는 반복자는 한 번만 사용할 수 있습니다. 즉, 반복자에 대해 반복하면 소진되어 다시 사용할 수 없습니다.

다음 코드를 고려하세요.

def test(data):
    for row in data:
        print("first loop")
    for row in data:
        print("second loop")

데이터가 비어 있지 않은 반복자(예: 목록 반복자 또는 생성기 표현식), 코드는 "첫 번째 루프"를 여러 번 인쇄하지만 "두 번째 루프"는 인쇄되지 않습니다. 이는 첫 번째 루프에서 반복자가 소비되었기 때문입니다.

list/set/dict 이해, list() 호출, sum() 또는 축소와 같은 다른 형태의 반복에서도 동일한 문제가 발생합니다. () 등이 있습니다.

그러나 데이터가 목록이나 범위(시퀀스)와 같은 또 다른 반복 가능 항목인 경우 두 루프 모두 예상대로 실행되어 "첫 번째 루프"를 인쇄합니다. 그리고 각 요소에 대한 "두 번째 루프"입니다. 이는 이러한 반복 가능 항목이 여러 번 반복될 수 있기 때문입니다.

반복하자면 반복자를 사용할 때 단일 사용 특성을 기억하는 것이 중요합니다. 데이터를 재사용하려면 요소를 목록에 저장하거나 itertools.tee()를 사용하여 독립적인 반복자를 생성하는 것이 좋습니다.

위 내용은 반복자를 두 번 반복할 수 없는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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