Python的iter()函數(shù)返回給定對(duì)象的迭代器。
iter()函數(shù)創(chuàng)建一個(gè)可以一次迭代一個(gè)元素的對(duì)象。
當(dāng)與for循環(huán),while循環(huán)等循環(huán)耦合時(shí),這些對(duì)象很有用。
iter()函數(shù)的語(yǔ)法為:
iter(object, sentinel)
iter()函數(shù)有兩個(gè)參數(shù):
iter()函數(shù)返回給定對(duì)象的迭代器對(duì)象。
如果用戶定義的對(duì)象未實(shí)現(xiàn)__iter__(),__next__()或__getitem()__,則會(huì)引發(fā)TypeError異常。
如果還提供了sentinel參數(shù),iter()將返回一個(gè)迭代器,直到?jīng)]有找到標(biāo)記字符為止。
# 元音列表 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'
輸出結(jié)果
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))
輸出結(jié)果
1 2 3 StopIteration
with open('mydata.txt') as fp: for line in iter(fp.readline, ''): processLine(line)
運(yùn)行該程序時(shí),它將以讀取模式打開(kāi)mydata.txt文件。
然后,for循環(huán)中的iter(fp.readline,'')調(diào)用readline(讀取文本文件中的每一行),直到到達(dá)標(biāo)記字符''(空字符串)為止。