0
点赞
收藏
分享

微信扫一扫

Python中的迭代器

小猪肥 2021-09-28 阅读 51

目录

  • 什么是迭代器
  • 如何生成迭代器
  • 迭代器的用法

什么是迭代器

  • 按需加载,有一点内容就放入内存一点
  • 无需等待所有内容加载到内存中才使用,提升效率

如何生成迭代器-iter

  • 介绍:
    • 生成一个迭代器对象
  • 用法:
    • iter(iterable)
  • 参数介绍:
    • iterable :可迭代的数据类型
  • 举例:
    • iter([1, 2, 3])
  • 返回值:
    • < list_ iterator at 0x4f3aee0>

迭代器的使用-next

  • 介绍:
    • 返回迭代器中数据
  • 用法:
    • next(iterator)
  • 参数介绍:
    • iterator :迭代器对象
  • 举例:
    • iter_ obj = iter([1,2,3])
    • next(iter_obj)
  • 返回值:
    • 1, 2 ,3
    • StopIteration

迭代器常用方法之生成迭代器

  1. 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
  1. 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
举报

相关推荐

0 条评论