英文文档:
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)
자세串),否则将报错。
>>> 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
# 定义类 >>> 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!