• python 迭代器


    可迭代对象

    可以直接作用于for循环的对象统称为可迭代对象

    (iterable)。可以用isinstance()去判断一个对象是否是iterable对象。

    数据类型

    可以直接作用于for循环的数据类型一般分为两种

    1.集合数据类型,如list、tuple、dict、set、string

    2.generator,包括生成器和带yield的generator function

    引入collections

    使用需要引入collections中的Iterable。

    示例如下:

    from collections import Iterable

    注意:从collections中导入,从python3.3已经弃用,到python3.9时将停止使用。

    可以用从collections.abc中导入

    示例如下:

    from collections.abc import Iterable

    判断是否可迭代对象

    使用示例:

    1. print(isinstance([], Iterable))
    2. print(isinstance((), Iterable))
    3. print(isinstance({}, Iterable))
    4. print(isinstance("", Iterable))
    5. print(isinstance("zhangsan", Iterable))
    6. print(isinstance((x for x in range(10)), Iterable))
    7. print(isinstance(1, Iterable))
    8. # 运算结果
    9. # True
    10. # True
    11. # True
    12. # True
    13. # True
    14. # True
    15. # False

    Next函数调用

    迭代器:不但可以作用于for循环,还可以被next()函数不断调用并返回下一个值,

    直到最后抛出StopIteration错误,表示无法继续返回下一个值。

    示例如下:

    1. num = (x for x in range(5))
    2. print(next(num))
    3. print(next(num))
    4. # 运算结果
    5. # 0
    6. # 1

    Iterator对象

    可以被next()函数调用并不断返回下一个值的对象称为迭代器(Iterator对象)。

    引入Iterator

    示例如下:

    from collections.abc import Iterator

    判断Iterator对象

    Isinstance()函数还可以用来判断一个对象是否是Iterator对象。

    示例如下:

    1. print(isinstance([], Iterator))
    2. print(isinstance((), Iterator))
    3. print(isinstance({}, Iterator))
    4. print(isinstance("", Iterator))
    5. print(isinstance("zhangsan", Iterator))
    6. print(isinstance((x for x in range(10)), Iterator))
    7. print(isinstance(1, Iterator))
    8. # 运算结果
    9. # False
    10. # False
    11. # False
    12. # False
    13. # False
    14. # True
    15. # False

    转化Iterator对象

    可以通过iter函数转化为Iterator对象。

    示例如下:

    1. iter1 = iter([1, 2, 3, 4, 5, 6])
    2. print(next(iter1))
    3. print(next(iter1))
    4. # 运算结果
    5. # 1
    6. # 2

    总结

    python 迭代器相关知识学习笔记

  • 相关阅读:
    SOA、ESB、微服务、分布式概念及专业名词阐述
    区间调度问题 ----- 贪心算法
    【网络研究院】机器学习系统的威胁是时候该认真对待了
    [小程序逆向]PC端VX小程序代码提取
    事件总线--EvenBus
    01_大数据导论与Linux基础
    MySQL学习——触发器的语法和示例
    Python np.argsort() 函数的用法
    Linux驱动开发(同步与互斥)
    C++ Reference: Standard C++ Library reference: C Library: cwchar: wmemset
  • 原文地址:https://blog.csdn.net/json_ligege/article/details/134537947