iter()是Python内置函数之一,它返回一个可迭代对象,并被用于迭代序列、集合、字典等。当在 Python 内部使用 iter() 函数时,iter() 会首先寻找一个实现了 iter() 方法的对象,如果没有找到就会接着找实现了 getitem() 方法的,否则就会抛出一个 TypeError 异常。
iter()函数常常被用来遍历一个序列,这是Python编程中的常见操作。iter()可以接收一个可迭代对象和一个哨兵值(也称为“标记”),以确保在对象到达末尾时停止循环。当迭代器达到哨兵值时,迭代将终止。
使用方法:
iter(object, sentinel)
其中:
- object:必需,支持迭代的集合对象。
- sentinel:必需,是用来标识迭代结束的值,如果不设置,默认为 None。
下面是两个iter()使用哨兵值的示例:
1.遍历一个文件,当文件读到指定的行时停止循环
with open('test.txt') as file:
for line in iter(file.readline, 'END'):
print(line)
代码中,使用 iter() 循环迭代 file.readline() 函数,直到遇到字符串 'END' 时停止。
2.使用哨兵值检查一个输入序列的长度
def get_length(sequence):
count = 0
sentinel = object()
for item in itertools.chain(sequence, [sentinel]):
if item is sentinel:
break
count += 1
return count
lst = [1,2,3,4,5,6]
print(get_length(lst)) # output: 6
上面的代码中使用 iter() 和 itertools.chain() 函数来将传入的序列连接到另一个包含哨兵值的序列上,从而检测长度是否正确。当迭代到哨兵值时,迭代器就会停止。该示例只是向大家展示了 iter() 函数的一些用例,并且在实际编程中并不是非常实用。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python iter()使用哨兵值 - Python技术站