Heim  >  Artikel  >  Backend-Entwicklung  >  Detaillierte Einführung in die integrierte It-Funktion von Python

Detaillierte Einführung in die integrierte It-Funktion von Python

高洛峰
高洛峰Original
2017-03-21 09:25:202196Durchsuche

英文文档:

iter(object[, sentinel])

Gibt ein Iteratorobjekt zurück. Das erste Argument wird je nach Vorhandensein des zweiten Arguments sehr unterschiedlich interpretiert. Ohne ein zweites Argument muss das Objekt ein Sammlungsobjekt sein, das das Iterationsprotokoll unterstützt (die Methode iter()), oder es muss das Sequenzprotokoll unterstützen (die Methode getitem() mit integer-Argumenten, die bei 0 beginnen). . Wenn keines dieser Protokolle unterstützt wird, wird TypeError ausgelöst. Wenn das zweite Argument, Sentinel, angegeben ist, muss das Objekt ein aufrufbares Objekt sein. Der in diesem Fall erstellte Iterator ruft ein Objekt ohne Argumente auf for each Aufruf seiner next()-Methode; Wenn der zurückgegebene Wert gleich Sentinel ist, wird StopIteration ausgelöst, andernfalls wird der Wert zurückgegeben.

Eine nützliche Anwendung der zweiten Form von iter() ist das Lesen von Zeilen einer Datei bis eine bestimmte Linie erreicht ist. Das folgende Beispiel liest eine Datei, bis die Methode readline() einen leeren String zurückgibt:

with open('mydata.txt') as fp:
    for line in iter(fp.readline, ''):
        process_line(line)

说明:

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

  2. 当第二个参数不提供时,第一个参数必须是一个支持可迭代协议(即实现了iter()方法)的集合(字典、集合、不可变集合),或者支持序列协议(即实现了getitem()方法,方法接收一个从0开始的整数参数)的序列(元组、列表、字符串),否则将报错.

>>> 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可被调用对象.创建的迭代对象,在调用next方法的时候会调用这个可被调用对象, 当返回值和sentinel值相等时, 终止迭代。

# 定义类
>>> 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

 

Das obige ist der detaillierte Inhalt vonDetaillierte Einführung in die integrierte It-Funktion von Python. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn