下面是 Python 使用 iter() 函数的完整攻略。
什么是 iter() 函数
iter() 是 Python 中的一个内置函数,它用于将一个可迭代对象转换成一个迭代器对象。所谓可迭代对象,就是具有 __iter__()
或 __getitem__()
方法的对象。
如果一个对象同时具有 __iter__()
和 __next__()
方法,就称这个对象是一个迭代器对象。
iter() 函数的使用方法
iter() 函数的参数可以是一个可迭代对象,或者是一个无参的 callable 对象。当参数是一个可迭代对象时,iter() 函数会返回这个可迭代对象对应的迭代器对象。当参数是一个无参的 callable 对象时,iter() 函数会不断调用这个 callable 对象,直到它返回一个指定的结束符号,例如 None。
下面是 iter() 函数的标准用法:
iterable = [1, 2, 3, 4, 5]
iterator = iter(iterable)
上面的代码中,iterable 是一个可迭代对象,它是一个列表对象。我们使用 iter() 函数将它转换成一个迭代器对象,然后将返回值赋值给 iterator 变量。
在上面的例子中,我们创建了一个列表对象,然后使用 iter() 转换成了一个迭代器对象。这时候,我们可以使用 next() 函数不断地获取迭代器对象的下一个值,直到遍历完整个迭代器:
for item in iterator:
print(item)
上面的代码中,我们使用 for 循环遍历迭代器对象,打印出其中的每一个元素。
iter() 函数的示例
下面我们来看两个实际的示例,更加深入地理解 iter() 函数的应用。
示例一:使用 iter() 函数遍历字典
我们知道,字典对象是不支持遍历的。但是,如果我们使用 iter() 函数将字典对象转换成迭代器对象,那么就可以遍历了:
d = {'one': 1, 'two': 2, 'three': 3}
for k in iter(d):
print(k, ':', d[k])
输出结果为:
one : 1
two : 2
three : 3
在上面的代码中,我们首先创建了一个字典对象,然后使用 iter() 函数将字典对象转换成了一个迭代器对象。接着,我们使用 for 循环遍历这个迭代器对象,输出了字典中的每一个键值对。
示例二:使用 iter() 函数遍历文件内容
我们可以使用 Python 的 open() 函数打开一个文件,然后使用 iter() 函数将文件对象转换成一个迭代器对象。这样,我们就可以逐行地读取文件内容了:
with open('test.txt') as f:
for line in iter(f.readline, ''):
print(line.strip())
在上面的代码中,我们首先使用 open() 函数打开了一个文件。接着,我们使用 iter() 函数将文件对象转换成了一个迭代器对象。在 for 循环中,我们使用 readline() 方法逐行读取文件内容,并使用 strip() 方法去除行尾的空白字符。当读取到文件的末尾时,readline() 方法返回空字符串,这时候我们可以在 iter() 函数的第二个参数中指定一个结束符号,例如 ”,这样就可以让迭代器遍历到文件的末尾并停止循环。
结论
iter() 函数是 Python 中十分重要的一个函数,它可以将可迭代对象转换成迭代器对象,从而实现对可迭代对象的遍历。我们可以将任何支持迭代的对象(例如列表、字典、生成器、文件等等)转换成迭代器对象,并使用 next() 函数或者 for 循环逐个访问其元素。