python学习之迭代器

在介绍迭代器时候,首选介绍两个概念,

  • Iterable:可以直接作用于for循环的对象统称为可迭代对象
  • Iterator:可以被next函数调用并不断返回下一个值的对象称为迭代器
    在集合数据类型中,list,dict,str等都是Iterable不是Iterator,下面通过代码展示
from collections.abc import Iterable
from collections.abc import Iterator

print(isinstance([], Iterable))
print(isinstance({}, Iterable))
print(isinstance('abc', Iterator))


def fun(arg):
    for i in range(arg):
        yield i
g = fun(6)
print(type(g))

print(isinstance(g, Iterable))
print(isinstance(g, Iterator))

上面执行的结果
在这里插入图片描述

集合数据类型如list、dict、str等是Iterable但不是Iterator,不过可以通过iter()函数获得一个Iterator对象。

Python的for循环本质上就是通过不断调用next()函数实现的,例如

for x in [1, 2, 3, 4, 5]:
    pass

完全等价于

# 首先获得Iterator对象:
it = iter([1, 2, 3, 4, 5])
# 循环:
while True:
    try:
        # 获得下一个值:
        x = next(it)
    except StopIteration:
        # 遇到StopIteration就退出循环
        break
发布了54 篇原创文章 · 获赞 9 · 访问量 1220

猜你喜欢

转载自blog.csdn.net/qq_29983883/article/details/105448152