Python 내장 iter 함수에 대한 자세한 소개

高洛峰
풀어 주다: 2017-03-21 09:25:20
원래의
2294명이 탐색했습니다.

英文文档:

iter(object[, sentinel])

반환 반복자 개체입니다. 첫 번째 인수는 두 번째 인수의 존재 여부에 따라 매우 다르게 해석됩니다. 두 번째 인수가 없으면 객체는 반복 프로토콜(iter() 메서드)을 지원하는 컬렉션 객체이거나 시퀀스 프로토콜(0에서 시작하는 integer 인수가 있는 getitem() 메서드)을 지원해야 합니다. . 해당 프로토콜 중 하나를 지원하지 않으면 TypeError가 발생합니다. 두 번째 인수인 sentinel이 제공되면 객체는 호출 가능한 객체여야 합니다. 이 경우 생성된 반복자는 for 호출에 대해 next() 메서드에 대해 인수 없이 object를 호출합니다. 반환된 값이 sentinel과 같으면 StopIteration이 발생하고, 그렇지 않으면 값이 반환됩니다.

iter()의 두 번째 형식의 유용한 응용 프로그램 중 하나는 파일 특정 라인에 도달할 때까지. 다음 예에서는 readline() 메서드가 빈 문자열:

with open('mydata.txt') as fp:
    for line in iter(fp.readline, ''):
        process_line(line)
로그인 후 복사
说明:

  1을 반환할 때까지 파일을 읽습니다.

函数功能返回一个可迭代对象

  2. 当第二个参数不提供时,第一个参数必须是一支持可迭代协议(即实现了iter( )방법)적 조합(자막, 조합, 불문)组、列表、

자세串),否则将报错。

>>> a = iter({'A':1,'B':2}) #字典集合
>>> a
<dict_keyiterator object at 0x03FB8A50>
>>> next(a)
'A'
>>> next(a)
'B'
>>> next(a)
Traceback (most recent call last):
  File "<pyshell#36>", line 1, in <module>
    next(a)
StopIteration
 
>>> a = iter('abcd') #字符串序列
>>> a
<str_iterator object at 0x03FB4FB0>
>>> next(a)
'a'
>>> next(a)
'b'
>>> next(a)
'c'
>>> next(a)
'd'
>>> next(a)
Traceback (most recent call last):
  File "<pyshell#29>", line 1, in <module>
    next(a)
StopIteration
로그인 후 복사
  3.当第two 。创建的迭代对象, 에서 다음 방법을 사용하세요时候会调用这个可被调用对象,当返回值와 sentinel值会调时,将抛takeStopIteration异常, 终止迭代。

# 定义类
>>> class IterTest: 
    def __init__(self):
        self.start = 0
        self.end = 10
    def get_next_value(self):
        current = self.start
        if current < self.end:
            self.start += 1
        else:
            raise StopIteration
        return current

>>> iterTest = IterTest() #实例化类
>>> a = iter(iterTest.get_next_value,4) # iterTest.get_next_value为可调用对象,sentinel值为4
>>> a
<callable_iterator object at 0x03078D30>
>>> next(a)
>>> next(a)
>>> next(a)
>>> next(a)
>>> next(a) #迭代到4终止
Traceback (most recent call last):
  File "<pyshell#22>", line 1, in <module>
    next(a)
StopIteration
로그인 후 복사
 

위 내용은 Python 내장 iter 함수에 대한 자세한 소개의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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