Python的iter()函數(shù)返回給定對象的迭代器。
iter()函數(shù)創(chuàng)建一個可以一次迭代一個元素的對象。
當與for循環(huán),while循環(huán)等循環(huán)耦合時,這些對象很有用。
iter()函數(shù)的語法為:
iter(object, sentinel)
iter()函數(shù)有兩個參數(shù):
iter()函數(shù)返回給定對象的迭代器對象。
如果用戶定義的對象未實現(xiàn)__iter__(),__next__()或__getitem()__,則會引發(fā)TypeError異常。
如果還提供了sentinel參數(shù),iter()將返回一個迭代器,直到?jīng)]有找到標記字符為止。
# 元音列表 list of vowels vowels = ['a', 'e', 'i', 'o', 'u'] vowels_iter = iter(vowels) print(next(vowels_iter)) # 'a' print(next(vowels_iter)) # 'e' print(next(vowels_iter)) # 'i' print(next(vowels_iter)) # 'o' print(next(vowels_iter)) # 'u'
輸出結果
a e i o u
class PrintNumber: def __init__(self, max): self.max = max def __iter__(self): self.num = 0 return self def __next__(self): if(self.num >= self.max): raise StopIteration self.num += 1 return self.num print_num = PrintNumber(3) print_num_iter = iter(print_num) print(next(print_num_iter)) # 1 print(next(print_num_iter)) # 2 print(next(print_num_iter)) # 3 # 引發(fā)StopIteration print(next(print_num_iter))
輸出結果
1 2 3 StopIteration
with open('mydata.txt') as fp: for line in iter(fp.readline, ''): processLine(line)
運行該程序時,它將以讀取模式打開mydata.txt文件。
然后,for循環(huán)中的iter(fp.readline,'')調用readline(讀取文本文件中的每一行),直到到達標記字符''(空字符串)為止。