python-迭代器
python迭代器
- 判断对象是否可以迭代
from collections import Iterable
print('检测对象是否可迭代:')
print(isinstance([1, 2, 3], Iterable))
检测对象是否可迭代:
True
如果对象可以迭代,返回True
- 生成迭代器
迭代器函数 -iter()
函数 与next()
函数
iter(iterable_object)
从可迭代对象中返回一个迭代器,iterable必须是能提供一个迭代器的对象;iter()
函数介绍:生成一个迭代器对象;iter()
函数用法:iter(iterable)
参数介绍:iterable
—> 可迭代的数据类型(比如列表、字典、元组以及集合类型等)
next(iterator)
从迭代器iterator中获取下一了记录,如果无法获取下一条记录,则触发stoptrerator异常;
说明
1.迭代器只能往前取值,不会后退
2.用iter函数可以返回一个可迭代对象的迭代器
-
例子
- 例1:
iter([1, 2, 3])
输出
<list_iterator at 0x256686eb880>
- 例2:
test_list = [1, 3, 5, 7]
test_iter = iter(test_list)
print(next(test_iter))
输出1
print(next(test_iter))
输出3
print(next(test_iter))
输出5
print(next(test_iter))
输出7
print(next(test_iter))
报错StopIteration
- 例3:
for
循环一行生成迭代器对象
result = (i for i in [1, 2, 3])
print('for 循环,第一次 \'i\'的值为:', next(result))
print('for 循环,第二次 \'i\'的值为:', next(result))
print('for 循环,第三次 \'i\'的值为:', next(result))
输出:
for 循环,第一次 'i'的值为: 1
for 循环,第一次 'i'的值为: 2
for 循环,第一次 'i'的值为: 3
- 例1:
-
其他
为了防止取值超过迭代器最大值,使用for
循环来实现迭代取值
def make_iter():
for i in range(5):
yield i # yield函数将每个for循环成员放到一个迭代器对象中,只有被调用才会使用
iter_obj = make_iter()
for i in iter_obj:
print(i)
print('----')
for i in iter_obj:
print(i)
结果:
0
1
2
3
4
----
0
1
2
3
4
----