Iterator는 좀 더 추상적인 개념입니다. 해당 클래스에 next 메서드와 iter 메서드가 있으면 모든 개체는 자신을 반환합니다. 문자열, 목록, dict, 튜플 등과 같은 컨테이너 개체의 경우 for 루프를 사용하는 것이 매우 편리합니다. 순회.
백그라운드의 for 문은 컨테이너 객체의 iter() 함수를 호출합니다. iter()는 Python의 내장 함수입니다. iter()는 컨테이너의 요소에 하나씩 액세스하는 next() 메서드를 정의하는 반복자 개체를 반환합니다. next()도 Python의 내장 함수입니다. 후속 요소가 없으면 next()는 StopIteration 예외를 발생시킵니다. (추천 학습: Python 비디오 튜토리얼)
# 随便定义一个list listArray=[1,2,3] # 使用iter()函数 iterName=iter(listArray) print(iterName)
Generator(Generator)는 반복자를 생성하기 위한 간단하고 강력한 도구입니다. 데이터를 반환해야 할 때 Yield 문을 사용한다는 점을 제외하면 일반 함수처럼 작성됩니다. next()가 호출될 때마다 생성기는 중단된 위치를 반환합니다(문장이 마지막으로 실행된 위치와 모든 데이터 값을 기억합니다)
# 菲波那切数列 def Fib(max): n, a, b = 0, 0, 1 while n < max: yield b a, b = b, a + b n = n + 1 return '亲!没有数据了...' # 调用方法,生成出10个数来 f=Fib(10) # 使用一个循环捕获最后return 返回的值,保存在异常StopIteration的value中 while True: try: x=next(f) print("f:",x) except StopIteration as e: print("生成器最后的返回值是:",e.value) break
차이:
생성기는 반복자가 수행할 수 있는 작업을 수행합니다 모든 것을 할 수 있으며 iter() 및 next() 메소드가 자동으로 생성되므로 생성기가 특히 간결하고 생성기도 효율적입니다. 목록 이해 대신 생성기 표현식을 사용하면 동시에 메모리를 절약할 수 있습니다. 프로그램 상태를 생성하고 저장하는 자동 방법 외에도 생성기가 종료되면 StopIteration 예외가 자동으로 발생합니다.
더 많은 Python 관련 기술 기사를 보려면 Python Tutorial 칼럼을 방문하여 알아보세요!
위 내용은 파이썬 반복자와 생성자의 차이점의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!