> 백엔드 개발 > 파이썬 튜토리얼 > Python 프로그래밍: 반복 가능한 객체 및 반복자(Iterable & Iterator)

Python 프로그래밍: 반복 가능한 객체 및 반복자(Iterable & Iterator)

王林
풀어 주다: 2023-04-20 12:19:06
앞으로
1333명이 탐색했습니다.

머리말

Python 프로그래밍에서는 루프 처리가 불가피하며, 여기에는 반복 가능한 객체와 반복기(Iterable & Iterator)라는 두 가지 중요한 개념이 포함됩니다. 이 반복이라는 주제를 실제 프로그래밍에 이해하고 적용할 수 있도록 2~3부로 나누어 소개하겠습니다. 이 글은 첫 번째 글입니다.

Python 프로그래밍: 반복 가능한 객체 및 반복자(Iterable & Iterator)

Iterable 객체

반복 가능한 객체(Iterable)는 한 번에 한 멤버를 반환할 수 있는 객체를 의미합니다. 반복 가능한 객체의 예로는 모든 시퀀스 유형(예: list, str 및 tuple)과 일부 비시퀀스 유형(예: dict, 파일 객체 및 __iter__() 메서드 또는 __getitem__을 구현하도록 정의한 클래스의 모든 객체가 포함됩니다. () 메소드에 의해 지정된 의미론 - 및 반복 프로토콜(자세한 내용은 여기 참조).

Iterable 객체는 for 루프 및 시퀀스가 ​​필요한 기타 장소(예: zip(), map(), filter()...)에서 사용할 수 있습니다. 반복 가능한 객체가 내장 함수 iter()에 매개변수로 전달되면 해당 객체의 반복자를 반환합니다. 이 반복자는 값 세트의 일회성 순회에만 적합합니다. 반복 가능한 객체로 작업할 때 일반적으로 iter()를 호출하거나 반복자 객체를 직접 처리할 필요가 없습니다. 이는 루프 중에 반복자를 보유하는 데 사용되는 이름 없는 임시 변수를 생성하는 for 문을 사용하여 자동으로 수행됩니다.

간단히 말하면, 반복 가능한 객체는 __iter__() 메서드 또는 __getitem__() 메서드를 구현하는 모든 클래스 객체입니다.

Iterator

Iterator(Iterator)는 데이터 흐름을 나타내는 객체를 말합니다. 반복자의 __next__() 메서드를 반복적으로 호출하거나 내장 함수 next()에 전달하면 스트림에 연속된 항목이 반환됩니다. 더 이상 사용할 수 있는 데이터가 없으면 StopIteration 예외가 발생합니다. 이 시점에서 반복자 객체는 소진되었으며 __next__() 메서드에 대한 추가 호출은 StopIteration을 다시 발생시킵니다. 반복자에는 반복자 객체 자체를 반환하는 __iter__() 메서드가 있어야 하므로 모든 반복자는 반복 가능하며 다른 반복 가능 객체를 허용하는 대부분의 장소에서 사용할 수 있습니다.

간단히 말하면 반복자는 두 가지 반복기 프로토콜 메서드인 __next__() 및 __iter__()를 구현하는 데이터 흐름 개체입니다.

주목할만한 예외는 여러 번 반복을 시도하는 코드입니다(동일한 반복자를 여러 번 사용). 컨테이너 객체(예: 목록)는 iter() 함수에 전달되거나 for 루프에서 사용될 때마다 새로운 반복자를 생성합니다. 반복자로 이것을 시도하면 이전 반복 중에 사용된 소진된 반복자 객체가 반환되어 빈 컨테이너처럼 보이게 됩니다. 따라서 코드를 작성할 때 이러한 상황을 피하십시오.

iter 함수

또한 내장 함수 iter()(배후에서 __iter__() 메서드를 호출함)가 반복자 개체를 반환한다는 점을 이해해야 합니다. 그래서 우리는 말할 수 있습니다. iterable은 반복자를 반환하는 객체입니다.

반복자와 반복 가능한 객체를 더 잘 이해하기 위해 설명과 코드 예제를 통해 다음 핵심 사항을 추가로 소개하겠습니다.

  • Iterator 프로토콜 및 루프
  • 사용자 정의 반복기 구현.

위 내용은 Python 프로그래밍: 반복 가능한 객체 및 반복자(Iterable & Iterator)의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:51cto.com
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿