zoukankan      html  css  js  c++  java
  • python3--迭代器

    # Auther: Aaron Fan


    # 可以直接作用于for循环的对象统称为可迭代对象:Iterable
    # 可以使用isinstance()判断一个对象是否是Iterable对象:
    """
    from collections import Iterable
    isinstance([],Iterable)
    True

    isinstance({},Iterable)
    True

    isinstance('abc',Iterable)
    True

    isinstance(( x for x in range(10) ),Iterable)
    True

    isinstance(100,Iterable)
    False
    """

    """
    # 而生成器不但可以被用作于for循环,还可以被next()函数不断调用并返回下一个值,
    # 直到最后跑出StopIteration错误表示无法继续返回下一个值了。

    # *可以被next()函数调用并不断返回下一个值的对象成为迭代器:Iterator
    # 可以使用isinstance()判断一个对象是否是Iterator对象:
    from collections import Iterator
    isinstance([],Iterator)
    False

    isinstance({},Iterator)
    False

    isinstance('abc',Iterator)
    False

    isinstance(( x for x in range(10) ),Iterator)
    True

    isinstance(100,Iterator)
    False

    生成器都是Iterator对象,但是list、dict、str虽然是Iterable,却不是Iterator
    把list、dict、str等Iterable变成Iterator可以使用iter()函数:

    from collections import Iterator
    a = [1,2,3]
    print(isinstance(a,Iterator))
    a = iter(a)
    print(isinstance(a,Iterator))
    print(a)
    for i in a:
    print(i)
    """

    # python的for循环本质上就是通过不断调用next()函数实现的,例如:
    for x in [1,2,3,4,5]:
    print(x)

    print("----------------------")
    # 实际上完全等价于:
    #首先获得Iterator对象:
    it = iter([1,2,3,4,5])
    #循环
    while True:
    try:
    #获得下一个值:
    x = it.__next__()
    print(x)
    except StopIteration:
    #遇到StopIteration就退出循环
    break
  • 相关阅读:
    angularjs自定义指令complie和link属性
    港航环境变化引起的错误解决方法
    myBatis + SpringMVC上传、下载文件
    mybatis动态sql中的trim标签的使用
    MyBatis一对多和多对一
    常用的MIME类型
    SpringMVC 文件上传配置,多文件上传,使用的MultipartFile
    web自动化测试(7)--js操作
    web自动化测试(6)--下拉列表操作
    web自动化测试(5)--鼠标、键盘操作
  • 原文地址:https://www.cnblogs.com/AaronFan/p/6161159.html
Copyright © 2011-2022 走看看