Python的iter()
函数是一个用于获取对象的迭代器的内置函数。这个函数对于实现迭代协议的对象非常有用,允许我们对集合进行迭代。
函数定义
iter()
函数的基本语法如下:
iter(object[, sentinel])
object
:支持迭代的集合对象。sentinel
:如果提供了第二个参数,那么object
必须是一个可调用的对象(如函数),此时迭代会在返回值等于sentinel
的时候终止。
如果不提供sentinel
参数,object
必须是一个支持迭代协议的对象(即,有__iter__()
方法或者序列类型的__getitem__()
方法),函数返回一个迭代器对象。
基本用法
获取列表迭代器
my_list = [1, 2, 3]
my_iter = iter(my_list)
print(next(my_iter)) # 输出: 1
print(next(my_iter)) # 输出: 2
使用sentinel参数
def countdown(n):
print('Starting countdown from', n)
while n > 0:
yield n
n -= 1
# 创建一个以0为终止符的迭代器
iter_countdown = iter(countdown(5).__next__, 0)
for number in iter_countdown:
print(number)
高级用法
自定义迭代器
class Counter:
def __init__(self, low, high):
self.current = low
self.high = high
def __iter__(self):
return self
def __next__(self):
if self.current > self.high:
raise StopIteration
else:
self.current += 1
return self.current - 1
for c in Counter(3, 8):
print(c)
与生成器一起使用
def my_generator():
for i in range(5):
yield i
gen = my_generator()
for value in gen:
print(value)
注意事项
- 使用
iter()
时,如果对象不支持迭代协议,将抛出TypeError
。 - 迭代器是一次性的,一旦耗尽,再次调用
next()
将抛出StopIteration
异常。
结论
iter()
是Python中一个非常有用的内置函数,它提供了一种标准的方法来迭代各种类型的集合对象。通过上述例程,我们可以看到iter()
在实际编程中的应用,以及如何有效地使用它来简化代码和增强其可读性。