当我们在Python中处理一些序列或类序列的对象时,我们会很频繁地使用for循环,通过一个一个地迭代其中的元素,这时候就可以借助iter
函数来创建迭代器,实现迭代操作。
在 Python 里,任何具有 __next__
方法以及 __iter__
方法的对象都可以被称为迭代器。而 iter
函数的作用就是构建这样一个迭代器,它接受一个可迭代对象作为参数,并返回该对象的一个迭代器。
下面是iter函数的具体使用方法,包括参数说明、返回值、示例代码等。
语法
iter
函数的语法如下所示:
iter(iterable, sentinel)
参数说明
iterable
: 可迭代对象。sentinel
: 标志值,当可迭代对象中出现标志值,则终止迭代器。
返回值
返回对象的迭代器。
示例代码
示例1:iter
函数的基本使用
下面的示例中,我们给出了一个包含有5个整数的序列,并把它作为可迭代对象传给iter
函数,创建了该序列的一个迭代器。接着我们使用for循环,依次迭代了这5个元素,并将它们打印出来。
numbers = [10, 20, 30, 40, 50]
result = iter(numbers)
for num in result:
print(num)
输出结果:
10
20
30
40
50
示例2:使用sentinel
标志创建迭代器
下面的示例中,我们创建了一个迭代器,使用了一个sentinel
标志。在这个示例中,我们使用iter
函数创建了一个循环不断迭代的序列,标志值为-1
,当可迭代对象中出现这个值时,循环将会停止。
import random
class RandomNumbers:
def __init__(self):
self.numbers = [random.randint(0, 9) for _ in range(10)]
def __iter__(self):
return self
def __next__(self):
next_number = self.numbers.pop(0)
if next_number == -1:
raise StopIteration
return next_number
random_numbers = RandomNumbers()
result = iter(random_numbers, -1)
for num in result:
print(num)
输出结果:
4
9
7
4
4
4
2
2
3
8
在上面的示例中,我们实现了一个自定义迭代器类RandomNumbers
,其初始化函数中生成了一个包括10个随机整数的列表。另外,该类还定义了一个__iter__
方法和一个__next__
方法,分别用于返回迭代器和返回下一个随机整数。当迭代器迭代到标志值-1
时,我们就使用raise StopIteration
语句来触发StopIteration
异常,从而结束迭代。在主程序中,我们使用iter
函数创建序列的迭代器,并以-1
作为标志值,如果列表里的元素中出现了这个值,循环就停止。