Python에서 반복자를 구현하는 방법의 예

高洛峰
풀어 주다: 2017-02-23 15:47:22
원래의
1873명이 탐색했습니다.

개요

반복자는 컬렉션의 요소에 액세스하는 방법입니다. 반복기 개체는 모든 요소에 액세스할 때까지 컬렉션의 첫 번째 요소부터 액세스하기 시작합니다. 반복자는 앞으로만 갈 수 있고 뒤로 갈 수는 없습니다.

지연 평가 또는 게으른 평가(Lazy Evaluation)

Iterator는 전체 Iteration 프로세스의 모든 요소를 ​​미리 준비할 것을 요구하지 않습니다. 요소는 반복할 때만 평가되며, 해당 요소 전후에는 존재하지 않거나 소멸될 수 있습니다. 이 기능은 거대하거나 무한한 컬렉션을 탐색하는 데 특히 적합합니다.

오늘 대략 다음과 같이 엔터티 클래스를 만들었습니다.

class Account():
 def __init__(self,
   account_name,
   account_type,
   account_cost,
   return_amount=0):
 self.account_name = account_name # 账户名
 self.account_type = account_type # 账户类型
 self.account_cost = account_cost # 月结费用
 self.return_amount = return_amount # 返还金额
로그인 후 복사

그런 다음 엔터티 목록을 만듭니다. :

accounts = [Account("张三", "年费用户", 450.00, 50),
  Account("李四", "月结用户", 100.00),
  Account("杨不悔", "月结用户", 190.00, 25),
  Account("任我行", "月结用户", 70.00, 10),
  Account("凌未风", "年费用户", 400.00, 40)]
로그인 후 복사

목록에서 다음 요소를 가져오는 데 필요할 때 next() 함수, 즉 "next"를 실행하고 싶습니다.

직접 테스트해 보세요:

Python에서 반복자를 구현하는 방법의 예

List에서는 next() 기능을 지원하지 않는 것으로 나타났습니다. 현재 List는 iterator가 아닌 iterable일 뿐입니다.

iterable과 iterator의 차이점은 다음과 같습니다.

  1. iterable - __iter__ 객체만 구현합니다.

    iterator - __iter__ 및 __next__ 메서드를 모두 구현하는 개체입니다.
  2. 그 중
  3. 는 반복자 객체를 반환하고,
는 반복 과정의 다음 요소를 반환합니다.

__iter____next__1. 목록을 반복자로 만듭니다

이전 계정을 반복자로 만들려면 간단한
함수를 사용하세요.

iter()

accounts_iterator = iter(accounts)
(next(accounts_iterator)).account_name
로그인 후 복사

결과는 아래와 같습니다.

아직도 이런 기능을 모르는 Python 개발자가 많은 것으로 추정됩니다. 간단한 기능 바? Python에서 반복자를 구현하는 방법의 예

2. 사용자 정의 반복자 객체

확장 측면에서 자신만의 반복자 객체를 정의하는 방법은 무엇입니까? 실제로 위의 정의에 따라
,

메소드를 구현한다는 뜻이다.

__iter__다음으로 AccountIterator 클래스를 정의합니다. __next__

class AccountIterator():
 def __init__(self, accounts):
 self.accounts = accounts # 账户集合
 self.index = 0

 def __iter__(self):
 return self

 def __next__(self):
 if self.index >= len(self.accounts):
  raise StopIteration("到头了...")
 else:
  self.index += 1
  return self.accounts[self.index-1]
로그인 후 복사

실행 결과는 다음과 같습니다.

잠시 던지는 끝에 next() 함수가 구현되었습니다. Python에는 여전히 우리가 계속 탐구하기를 기다리고 있는 예상치 못한 기능이 많이 있습니다. 아마도 이것이 Python의 매력이자 괴짜일 것입니다. Python에서 반복자를 구현하는 방법의 예

파이썬에서 반복자를 구현하는 방법에 대한 더 많은 예와 관련 기사를 보려면 PHP 중국어 웹사이트를 주목하세요!

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