• 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
  • 相关阅读:
    codeforces1191B Tokitsukaze and Mahjong 哈希+思维
    洛谷P1608 路径统计 最短路变种 dijkstra算法
    自考新教材-p90_5(4)
    自考新教材-p90_5(3)
    自考新教材-p90_5(2)
    自考新教材-p90_5(1)
    自考新教材-p89_3
    自考新教材-p88_4(2)
    自考新教材-p88_4(1)
    自考新教材-p87_3
  • 原文地址:https://www.cnblogs.com/AaronFan/p/6161159.html
Copyright © 2020-2023  润新知