📅  最后修改于: 2020-09-20 04:14:44             🧑  作者: Mango
iter()
函数创建一个可以一次迭代一个元素的对象。
当与for循环,while循环等循环耦合时,这些对象很有用。
iter()
函数的语法为:
iter(object, sentinel)
iter()
函数采用两个参数:
iter()
函数返回给定对象的迭代器对象。 __iter__()
和__next__()
或__getitem()__
,则会引发TypeError
异常。 iter()
返回一个迭代器,直到找不到哨兵字符为止。 # 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
# raises StopIteration
print(next(print_num_iter))
输出
1
2
3
Traceback (most recent call last):
File "", line 23, in
File "", line 11, in __next__
StopIteration
with open('mydata.txt') as fp:
for line in iter(fp.readline, ''):
processLine(line)
运行该程序时,它将以读取模式打开mydata.txt文件。
然后, for
循环中的iter(fp.readline, '')
调用readline
(读取文本文件中的每一行),直到到达前哨字符''
(空字符串)为止。
推荐读物: Python迭代器