Python迭代器的用法(附带实例)
在 Python 程序中,能够用于 for 循环的对象如下:
所有这些能够用于 for 循环的对象均被称为可迭代对象(Iterable)。
判断一个对象是否为可迭代对象可以使用 isinstance() 方法,例如:
像生成器这种可以被 next() 函数调用并不断生成下一个值的对象被称为迭代器(Iterator)。
对于不是迭代器的可迭代对象,可以使用 iter() 函数将其变为迭代器,例如:
可以使用 for 循环遍历迭代器,例如:
也可以使用 next() 函数遍历迭代器,例如:
- 集合数据类型,如字符串、列表、元组、字典和集合;
- 生成器,包括生成器表达式和生成器函数。
所有这些能够用于 for 循环的对象均被称为可迭代对象(Iterable)。
判断一个对象是否为可迭代对象可以使用 isinstance() 方法,例如:
>>> from collections import Iterable >>> isinstance("",Iterable) True >>> isinstance([],Iterable) True >>> isinstance((),Iterable) True >>> isinstance({},Iterable) True >>> isinstance( ( num * num for num in range(5) ),Iterable) True在所有可用于 for 循环的对象中,生成器可以被 next() 函数不断调用并生成下一个值,直到抛出 StopIteration 错误表示无法继续为止。
像生成器这种可以被 next() 函数调用并不断生成下一个值的对象被称为迭代器(Iterator)。
对于不是迭代器的可迭代对象,可以使用 iter() 函数将其变为迭代器,例如:
>>> from collections import Iterator >>> isinstance([],Iterator) False >>> isinstance(iter([]),Iterator) True
可以使用 for 循环遍历迭代器,例如:
list = [1,2,3,4] for num in iter(list): print(num)执行结果为:
1
2
3
4
也可以使用 next() 函数遍历迭代器,例如:
import sys list = [1,2,3,4] iter = iter(list) while True: try: print(next(iter)) except StopIteration: sys.exit()执行结果为:
1
2
3
4