>  기사  >  백엔드 개발  >  Python에서 Iterator와 "Lazy Iterator"의 차이점은 무엇입니까?

Python에서 Iterator와 "Lazy Iterator"의 차이점은 무엇입니까?

王林
王林앞으로
2023-05-09 18:40:161301검색

Python에서 반복자는 목록이나 튜플과 같은 일련의 값을 반복할 수 있게 해주는 객체입니다. __iter__() 및 __next__()라는 두 가지 메서드를 구현하여 작동합니다. __iter__() 메서드는 반복자 객체 자체를 반환하는 반면, __next__() 메서드는 시퀀스의 다음 값을 반환합니다. 더 이상 반환할 값이 없으면 StopIteration 예외가 발생합니다.

표준 사용자 정의 반복자:

class Squares:
    def __init__(self, n):
        self.n = n
        self.current = 0
    
    def __iter__(self):
        return self
    
    def __next__(self):
        if self.current >= self.n:
            raise StopIteration
        else:
            result = self.current ** 2
            self.current += 1
            return result
 
# Using the iterator
squares = Squares(5)
for square in squares:
    print(square)

Python에서 iter()는 주어진 반복 가능 객체에 대한 반복자를 반환하는 내장 함수입니다.

반복 가능한 객체는 목록, 튜플, 집합, 사전 또는 __iter__() 메서드를 정의하는 사용자 정의 객체와 같이 반복될 수 있는 모든 객체입니다.

iter()가 반복 가능한 객체에서 호출되면 iterable 객체의 값 시퀀스를 한 번에 하나씩 제공하기 위해 next() 메서드를 사용하여 반복자 객체를 반환합니다.

iter() 함수는 루프 및 기타 반복기와 함께 시퀀스 요소 필터링, 매핑 및 축소와 같은 작업을 수행하는 데 자주 사용됩니다.

iter() 함수로 생성된 반복자:

numbers = [1, 2, 3, 4, 5]
iterator = iter(numbers)
 
print(next(iterator))  # Output: 1
print(next(iterator))  # Output: 2
print(next(iterator))  # Output: 3

lazy 반복자:

"게으른 반복자"는 시퀀스의 모든 값을 미리 생성하지 않는 특별한 유형의 반복자입니다. 대신 필요할 때 생성합니다. 이는 모든 값을 한 번에 생성하고 많은 메모리를 소비하는 것을 방지하므로 매우 크거나 무한한 시퀀스를 처리할 때 유용합니다.

Python에서 게으른 반복자는 생성기 함수를 사용하여 구현되는 경우가 많습니다(생성기는 항복 키워드를 사용하는 함수입니다). 한 번에 하나의 값을 반환합니다. 값이 요청될 때마다 생성기는 중단된 부분부터 시작하여 시퀀스의 다음 값을 생성합니다.

아아아아

위 내용은 Python에서 Iterator와 "Lazy Iterator"의 차이점은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 yisu.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제