目录
什么是迭代器
- 按需加载,有一点内容就放入内存一点
- 无需等待所有内容加载到内存中才使用,提升效率
如何生成迭代器-iter
- 介绍:
- 用法:
- 参数介绍:
- 举例:
- 返回值:
< list_ iterator at 0x4f3aee0>
迭代器的使用-next
- 介绍:
- 用法:
- 参数介绍:
- 举例:
iter_ obj = iter([1,2,3])
next(iter_obj)
- 返回值:
迭代器常用方法之生成迭代器
- for循环生成法一
yield
In [27]: def test():
for i in range(10):
......print(i)
......yield i
In [28]: res = test()
In [29]: next(res)
0ut[29]: 0
- for循环一行生成迭代器
In [30]:res=(i for i in [1,2,3])
In [31]: next(res)
Out [31] : 1
迭代器常用方法之for循环获取
In [32]:res=(i for i in [1,2,3])
In [33]: for item in res:
...: print ( item)
1
2
3
实战
#!/user/bin/env python
# -*- coding: utf-8 -*-
iter_obj = iter((1, 2, 3))
def _next(iter_obj):
try:
return next(iter_obj)
except StopIteration:
return None
# print(_next(iter_obj))
# print(_next(iter_obj))
# print(_next(iter_obj))
# print(_next(iter_obj)) # 当迭代器中数据被调用完后,将不再被调用
for i in iter_obj:
print(i)
print('========')
def make_iter():
for i in range(10):
yield i
iter_obj = make_iter()
for i in iter_obj:
print(i)
print('---------')
"""
迭代器每一次使用会将其放到内存中,
将数据被读取后,内存的数据会被释放,
所以当完整读取一个迭代器后,这个迭代器
中的内存数据就已经空了,再次执行就拿不
到数据了
"""
for i in iter_obj:
print(i)
iter_obj = (i for i in range(5))
for i in iter_obj:
print(i)
print('========')
for i in iter_obj:
print(i)
1
2
3
========
0
1
2
3
4
5
6
7
8
9
---------
0
1
2
3
4
========
Process finished with exit code 0